Параметры функции в управляемом по времени триггере

У меня есть функция, которая должна иметь два разных поведения в зависимости от ее параметров:

  • Если нет параметра, сделайте A

  • В противном случае сделать B

Если я просто запустил функцию, выбрав ее в редакторе сценариев и щелкнув "Запустить", она запустится, как и ожидалось. Он делает то, что должен делать без параметров. Если я запускаю его по времени, то ничего не происходит. Я предполагал, что при запуске функции в триггере параметры также будут определены как неопределенные. Я что-то пропустил?

Вот код функции:

function logToday(sede) {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('workedDays');
  var dateElement = new dateElement_();
  var hour=dateElement.hour()+":45";
  var monthYear=dateElement.month(); 
  var day=dateElement.dayInMonth();
  var dayName=dateElement.weekDayName();

  Logger.log("Running log Today with: "+sede);

  if(! sede)
  {

    sede="";hour="";
    sheet.appendRow([monthYear,dayName,day,sede,hour]);

  }
  else
  {
    var LastRow=new LastRow_(sheet);

    if(LastRow.getColValue("sede")=="")
    {
      LastRow.setColValue("sede",sede);
      LastRow.setColValue("Entered Hour",hour);
      if(dateElement.weekDay()==0 || dateElement.weekDay()==6 )colorWeekend(sheet);
      Logger.log(dateElement.weekDay());

    }
  }

}

1 ответ

Решение

При запуске функция получает некоторые параметры из триггера. Например, триггер времени каждую минуту будет возвращать что-то вроде этого: {минута =58, день недели =1, часовой пояс =UTC, неделя года =7, секунда =20, день месяца =10, month=2, year=2014, hour=10, authMode=full}

функция, которая делает этот тест:

function test(e){
  SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").appendRow([e]);
}

Что вы можете сделать: В вашем коде вместо анализа простой строки в качестве параметра вы можете передать своей функции объект:

function passSedeArg(){
  var obj={"sede":"argument"}; // here "argument" must be changed for the old "sede" you where passing
  logToday(obj);
}

function logToday(obj) {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('workedDays');
  var dateElement = new dateElement_();
  var hour=dateElement.hour()+":45";
  var monthYear=dateElement.month(); 
  var day=dateElement.dayInMonth();
  var dayName=dateElement.weekDayName();

  Logger.log("Running log Today with: "+sede);

  if(typeof obj.sede=="undefined") // no obj.sede argument where given
  {

    sede="";hour="";
    sheet.appendRow([monthYear,dayName,day,sede,hour]);

  }
  else // you have a obj.sede argument
  {
    var LastRow=new LastRow_(sheet);

    if(LastRow.getColValue("sede")=="")
    {
      LastRow.setColValue("sede",obj.sede);
      LastRow.setColValue("Entered Hour",hour);
      if(dateElement.weekDay()==0 || dateElement.weekDay()==6 )colorWeekend(sheet);
      Logger.log(dateElement.weekDay());

    }
  }
}
Другие вопросы по тегам