0
私はコードを再利用しています。スプレッドシートからさまざまなセルをメール送信する方法について、同様の質問に答えるために提供されています。呼び出されGoogleスクリプトtypedefエラー:関数が見つかりません
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();
};
機能がSheethandler()関数内の両方である:次のように私は2つの呼び出し機能を持っている
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);
}
onFormSubmit()関数が正常に動作しますが、私はprepForPayrollEntryを実行したときに()関数というエラーが表示されます。TypeError:オブジェクト[オブジェクトオブジェクト]の関数generateListForPaychexが見つかりません。 (行542、ファイル "コード")。
は、私が参照してるのコードは、私が間違ってやっているのポインタをお願い申し上げGoogle Sheets content to email (lay out)
から来ました。 Sheethandler(のための関数定義の終わりに
個人的に私は、これをデータ型に変換し、 'this'を 'var'の代わりにSheetHandler関数の各プロパティに追加して初期化します。次に、その関数を呼び出すたびに 'new'キーワードを追加します。 – Gerneio
私はJavaScriptのプログラミングには新しく、 'this'と 'new'のキーワードを完全に理解していません。コードの変更を最小限に抑えるために、なぜ1つの機能が見えるのか分かりませんか? –
それは私が理解していない部分です。私は個人的に今のようなJavaScript関数を使用したことはありません。私は今のようにそれをテストする能力がありません。しかし、おそらく後で私は時間を得る。 [this](https://medium.com/@benastontweet/user-defined-types-in-javascript-and-hoisting-6337c929a339#.d6d65cabz)を確認してください。 – Gerneio