【问题标题】:onEdit trigger google scripts not workingonEdit 触发谷歌脚本不起作用
【发布时间】:2014-09-16 14:48:31
【问题描述】:

所以我有一个 Google 电子表格,它不断被一个名为“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);

}**

【问题讨论】:

  • 您是手动编辑工作表还是仅使用您提到的其他脚本?
  • 使用其他脚本编辑工作表。

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


【解决方案1】:

如果只使用另一个脚本修改工作表,则不需要使用 onEdit 触发器,您可以直接从另一个函数调用 writeToCal() 函数,在调用它之前添加 SpredsheetApp.flush() 以便您确保所有修改都得到适当记录。

【讨论】:

  • 这很好用。谢谢你的帮助。我仍然对触发器实际上没有触发感到恼火,但我想这不再是问题了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
相关资源
最近更新 更多