2016-05-27 22 views
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(のための関数定義の終わりに

+0

個人的に私は、これをデータ型に変換し、 'this'を 'var'の代わりにSheetHandler関数の各プロパティに追加して初期化します。次に、その関数を呼び出すたびに 'new'キーワードを追加します。 – Gerneio

+0

私はJavaScriptのプログラミングには新しく、 'this'と 'new'のキーワードを完全に理解していません。コードの変更を最小限に抑えるために、なぜ1つの機能が見えるのか分かりませんか? –

+0

それは私が理解していない部分です。私は個人的に今のようなJavaScript関数を使用したことはありません。私は今のようにそれをテストする能力がありません。しかし、おそらく後で私は時間を得る。 [this](https://medium.com/@benastontweet/user-defined-types-in-javascript-and-hoisting-6337c929a339#.d6d65cabz)を確認してください。 – Gerneio

答えて

0

)以下である:

return { 
    'processSheet': processSheet, 
    'approveByKey': approveByKey, 
    'denyByKey': denyByKey, 
    } 
}; 

私が新しく追加された関数を定義する1行を追加し、今では動作します:

return { 
    'processSheet': processSheet, 
    'approveByKey': approveByKey, 
    'denyByKey': denyByKey, 
    'generateListForPaychex' : generateListForPaychex 

    } 
}; 
関連する問題