当我使用onEdit函数时,我的代码停止工作了吗?

时间:2019-06-20 18:49:31

标签: google-apps-script

我的代码使用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]
        })
    }
}
};

1 个答案:

答案 0 :(得分:0)

说明:

您的简单触发器没有访问CalendarApp的权限。它们以“ LIMITED” authMode而不是“ FULL”运行,就像您手动运行脚本时一样。

这就是您的脚本无法正常运行的原因,一旦您将其从具有运行许可的基于手动/时间的触发器中取出,然后将其替换为简单的触发器,便失去了所需的授权成功运行。有关每种触发器类型的权限的更多详细信息,请参见下面的参考。


参考文献:

  1. Simple Triggers
  2. Event Objects

解决方案:

请改用可安装的onEdit()触发器。为此,请进入项目的触发器,添加一个新触发器并将其设置为在编辑电子表格时运行。然后将要求您授权脚本,这将使其按预期运行,因为您已明确授予其授权。

注意:请确保重命名您的函数,以免收到任何虚假的额外触发器。


参考:

  1. Installable Triggers