onEdit触发谷歌脚本无法正常工作

时间:2014-09-16 14:48:31

标签: javascript triggers google-apps-script google-sheets google-calendar-api

所以我有一个谷歌电子表格,不断被一个名为“writeToSheet”的脚本更新(这很好)。这会在电子表格的末尾写一个新行,其最后一列是日期。

我还有第二个脚本,其中包含一个名为“writeToCal”的函数,该函数从电子表格中的这一新行中获取一些数据,并在上述列所给出的日期创建一个Google日历事件。

当我尝试触发“writeToCal”时会出现问题,以便在更新电子表格时执行“writeToCal”。我尝试过简单的触发器和可安装的触发器,但似乎都不适合我。 (https://developers.google.com/apps-script/guides/triggers/installable

当我从Google电子表格中的脚本管理器运行代码时,代码可以正常工作(即它会创建日历事件),但我希望每次更新电子表格时它都会自动运行。由于脚本在我运行时工作正常,我认为这是触发问题,但我无法找出问题所在。任何帮助将不胜感激

我的代码如下,此脚本绑定到相关的电子表格:

    **function triggerWhyDoYouCallMeDave() {
  var ss = SpreadsheetApp.openById("BlahBlah");
  ScriptApp.newTrigger('writeToCal')
  .forSpreadsheet(ss)
  .onEdit()
  .create();
}

function writeToCal(e) {    
  var ss= SpreadsheetApp.openById("BlahBlah");
  var tt = ss.setActiveSheet(ss.getSheets()[0]);

  var lastRow = tt.getLastRow();
  var lastColumn = tt.getLastColumn();

  //Title is from the User and the follow up message
  var userCell = tt.getRange(lastRow, 2);
  var usr = userCell.getValue();

  var followUpCell = tt.getRange(lastRow, 8);
  var follUp =  followUpCell.getValue();

 var target = tt.getRange(lastRow, 6);
  var targetName = target.getValue();

  var title = (usr+": "+follUp+" with "+targetName);

  //Get the date from the follow up date.
  var dateCell = tt.getRange(lastRow, 9);
  var follUpDate = new Date(dateCell.getValue());

  var calendar =      CalendarApp.getCalendarById('BlahBlah');
   calendar.createAllDayEvent(title, follUpDate);

}**

1 个答案:

答案 0 :(得分:1)

如果仅使用其他脚本修改工作表,则不需要使用onEdit触发器,只需直接从其他函数调用writeToCal()函数,然后再添加SpredsheetApp.flush()调用它以确保所有修改都得到适当记录。