Ошибка Google script Typedef: не удается найти функцию

Я повторно использую код Sandy Good, предоставленный, чтобы ответить на аналогичный вопрос о том, как отправлять по электронной почте различные ячейки из электронной таблицы. У меня есть 2 вызывающих функции следующим образом:

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() :

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 () работает нормально, но когда я запускаю функцию prephorpayrollentry (), я получаю сообщение об ошибке
TypeError: не удается найти функцию generateListForPaychex в object [object Object]. (строка 542, файл «код»).

Код, на который я ссылаюсь, пришел из Google Sheets content to email (lay out)

Буду признателен за указания на то, что я делаю неправильно.

1 ответ

  1. В конце определения функции для Sheethandler() находится следующее:

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

    Я добавил еще одну строку, чтобы определить недавно добавленную функцию, и теперь она работает:

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