Ich verwende Code Sandy Good erneut, um eine ähnliche Frage zum E-Mail-Versand verschiedener Zellen aus einer Tabelle zu beantworten. Ich habe 2 Anruffunktionen wie folgt:Google-Skript Typedef-Fehler: Funktion kann nicht gefunden werden
function onFormSubmit() {
var sheet = getSpreadsheet().getSheetByName(RESPONSES_SHEET);
handler = SheetHandler(sheet);
handler.processSheet();
writeToLog();
};
function prepForPayrollEntry() {
var sheet = getSpreadsheet().getSheetByName(RESPONSES_SHEET);
handler = SheetHandler(sheet);
handler.generateListForPaychex();
};
Die Funktionen sind sowohl in der Sheethandler() Funktion aufgerufen wird:
function SheetHandler(sheet) {
var _sheet = sheet;
var _data = getRowsData(_sheet);
// Removed other functions not relevant to this code
var processSheet = function() {
_data.forEach(function(d) {
if(d.state == BLANK_STATE) {
_markPending(d);
}
});
}
var generateListForPaychex = function() {
var allRowsData = "";
var body = "",
payPeriod,
employeeName,
numberOfHours,
leaveType;
_data.forEach(function(d) {
if(d.state == APPROVED_STATE) { //Only list approved entries
payPeriod = d.payrollPeriod;
employeeName = d.yourName;
numberofHours = d.numberOfHoursRequested;
leaveType = d.typeOfLeave;
body = ""; //Reset on every loop
body = payPeriod + " " +
employeeName + " " +
numberOfHours + " " +
leaveType +
"\n";
allRowsData = allRowsData + body;
}
});
Logger.log(allRowsData);
MailApp.sendEmail(SETTINGS.APPROVAL_NOTICE_EMAIL_TO,SETTINGS.PAYCHEX_LIST_FOR_REVIEW,allRowsData);
}
Die onFormSubmit() Funktion funktioniert gut, aber wenn ich die prepForPayrollEntry run() Funktion Ich bekomme einen Fehler, TypeError zu sagen: Funktion generateListForPaychex kann nicht im Objekt [Objekt Objekt] gefunden werden. (Zeile 542, Datei "Code").
Der Code, den ich Referenzierung kam von Google Sheets content to email (lay out)
schätzen würde Zeiger auf das, was ich falsch mache.
I persönlich würde dies in einen Datentyp umwandeln und ihn initialisieren, indem Sie 'this' zu jeder Eigenschaft in der SheetHandler-Funktion anstelle von 'var' hinzufügen. Fügen Sie dann das neue Keyword hinzu, wenn Sie diese Funktion aufrufen. – Gerneio
Ich bin neu in der JavaScript-Programmierung und verstehe daher nicht die "diese" und "neuen" Keywords. Können Sie, um Codeänderungen zu minimieren, sehen, warum eine Funktion gesehen wird, aber die andere nicht? –
Das ist der Teil, den ich nicht verstehe. Ich habe persönlich noch nie eine JavaScript-Funktion wie Sie gerade verwendet. Ich habe nicht die Fähigkeit, es so zu testen, wie es gerade ist. Aber vielleicht später, wenn ich Zeit bekomme. Überprüfen Sie [diese] (https://medium.com/@benastontweet/user-defined-types-in-javascript-and-hoisting-6337c929a339#.d6d65cabz) aus. – Gerneio