Browser.msgBox无法在附加的google脚本中使用onEdit

时间:2017-03-08 21:15:31

标签: google-apps-script google-sheets triggers google-apps-script-addon

我有一段代码可以在google工作表中的任何编辑中运行,如下所示:

function onEdit(e) {
   Browser.msgBox("I pop up on Edit!");
}

但是,当它作为附加组件在Chrome网上应用店中部署和发布时,似乎无法正常工作......我在其他方法中使用Browser.msgBox并不参与其中编辑触发器,它们工作正常。

我尝试使用模态对话框,ui警报,备注,html弹出窗口和Toast消息来代替Browser.msgBox,但它们都不适用于编辑触发器功能。

我能找到的唯一理由是编辑触发器与Google Spreadsheets Add-ons中的弹出框不兼容。我能否对此有所了解?

2 个答案:

答案 0 :(得分:0)

onEdit()将在您启动脚本的工作表中(在bound的工作表中)继续触发,但是如果您尝试将其部署为工作表加载项,需要明确将其安装为触发器。请注意,它仍必须命名为onEdit,而不是myEditingFunction

为了测试您的触发功能,您必须首先将Sheet加载项作为某种受限应用程序进行部署(以绕过Google的审查),然后将其部署到测试表之外的表中,否则触发器安装会导致异常:Exception: The Add-on attempted an action that is not permitted in Test as Add-on mode. To use this action, you must deploy the Add-on.

这是我安装onEdit触发器的方式:

var sheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
var documentProperties = PropertiesService.getDocumentProperties();
var editingFlag = documentProperties.getProperty(TRIGGER);
if (editingFlag == null) {
    try {
        trigger = ScriptApp.newTrigger("onEdit").forSpreadsheet(e.source).onEdit().create();
        documentProperties.setProperty(TRIGGER, "");
    } catch (e) {
        console.error("Caught exception on attempting to save trigger:" + e);
    }
} else {
    console.log("onEdit trigger is already listening for edits to sheet " + sheetName);
}

答案 1 :(得分:-1)

这是一个样本。

function onEdit(e){
  var ui = SpreadsheetApp.getUi();
  ui.alert("I pop up on Edit! " + e.value);
}

enter image description here

如果您想了解详细信息,请查看https://developers.google.com/apps-script/reference/base/ui