我的代码使用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]
})
}
}
};
答案 0 :(得分:0)
您的简单触发器没有访问CalendarApp
的权限。它们以“ LIMITED” authMode
而不是“ FULL”运行,就像您手动运行脚本时一样。
这就是您的脚本无法正常运行的原因,一旦您将其从具有运行许可的基于手动/时间的触发器中取出,然后将其替换为简单的触发器,便失去了所需的授权成功运行。有关每种触发器类型的权限的更多详细信息,请参见下面的参考。
请改用可安装的onEdit()
触发器。为此,请进入项目的触发器,添加一个新触发器并将其设置为在编辑电子表格时运行。然后将要求您授权脚本,这将使其按预期运行,因为您已明确授予其授权。
注意:请确保重命名您的函数,以免收到任何虚假的额外触发器。