所以我有一个谷歌电子表格,不断被一个名为“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);
}**
答案 0 :(得分:1)
如果仅使用其他脚本修改工作表,则不需要使用onEdit触发器,只需直接从其他函数调用writeToCal()
函数,然后再添加SpredsheetApp.flush()
调用它以确保所有修改都得到适当记录。