我的代码使用myFunction()
运行得很好,但是当我将其更改为onEdit
,并使用e.range
和列号恢复在特定列中的工作时,它停止了
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Timesheet & Feedback");
var cell = ss.getActiveCell();
var cellContent = cell.getValue();
var Manaf = CalendarApp.getCalendarById("manaf652@gmail.com");
var MustafaSmeer = CalendarApp.getCalendarById("8q65ner19m8uk8idmmkmrr2hvs@group.calendar.google.com");
var activeRow = ss.getActiveCell().getRow();
var data = ss.getRange("A" + activeRow + ":G" + activeRow).getValues();
var range = e.range;
var CellColumn = range.getColumn();
if (CellColumn == 2) {
if (cellContent === "Mustafa Sameer") {
MustafaSmeer.createEvent(data[0][0], data[0][2], data[0][2], {
description: "First call " + data[0][0]
});
MustafaSmeer.createEvent(data[0][0], data[0][4], data[0][4], {
description: "Second call " + data[0][0]
});
MustafaSmeer.createEvent(data[0][0], data[0][6], data[0][6], {
description: "Third call " + data[0][0]
})
}
}
};
发布于 2019-06-21 03:17:14
解释:
您的简单触发器没有访问CalendarApp
的授权。它们以“有限的”authMode
运行,而不是像手动运行脚本时那样“完全”运行。
这就是为什么你的脚本不能正常运行的原因,一旦你在你允许运行的情况下把它从手动/基于时间的触发器中拿出来,然后用一个简单的触发器来代替它,它就失去了成功运行所需的授权。关于每种触发器类型的权限,请参考下面的参考文档。
参考文献:
解决方案:
请改用可安装的onEdit()
触发器。为此,请进入项目的触发器,添加一个新的触发器,并将其设置为在编辑电子表格时运行。然后你将被要求授权这个脚本,这将允许它按照你的期望运行,因为你已经明确地给了它你的授权。
注意::确保重命名你的函数,这样你就不会得到任何虚假的额外触发器。
参考资料:
https://stackoverflow.com/questions/56692181
复制相似问题