【问题标题】:Browser.msgBox not working onEdit in add-on google scriptsBrowser.msgBox 不工作在附加的谷歌脚本中编辑
【发布时间】:2017-03-08 21:15:30
【问题描述】:

我有一段代码可以在我的谷歌表格中的任何编辑上运行,如下所示:

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

但是,当它作为附加组件部署并发布到 Chrome 网上应用店时,它似乎不起作用……我在其他不涉及编辑触发器的方法中有 Browser.msgBox,它们工作正常。

我曾尝试使用模态对话框、ui 警报、注释、html 弹出窗口和 toast 消息来代替 Browser.msgBox,但它们在编辑触发器函数中都不起作用。

我能找到的唯一原因是编辑触发器与 Google 电子表格插件中的弹出框不兼容。我可以对此有所了解吗?

【问题讨论】:

  • 根据Apps Script Documentation,插件可以使用简单的触发器。您可以尝试将名称从onEdit 更改为其他名称,然后“安装”一个“编辑时”触发器,看看是否有什么不同。
  • 我发现此问题已报告给 Google:issuetracker.google.com/issues/63950879 在问题跟踪器中为它加星标,以便为问题提供动力并随时了解更新。

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


【解决方案1】:

这是一个示例。

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

如需了解详情,请查看https://developers.google.com/apps-script/reference/base/ui

【讨论】:

  • 不幸的是,这些也不起作用。我认为一般 ui 调用在 onEdit 方法中不起作用
  • 尝试将其部署为附加组件。当作为附加组件时,所有这些方法都不起作用“onEdit”触发器
  • 没关系!我无法从屏幕截图中看出,但我们制作了我们的功能,就像您的一样,将其部署为商店中的附加组件,但它在部署的工作表中不起作用。我们的问题是 onEdits 正常工作,但是当它被部署为附加组件时,ui 调用和浏览器消息在 onEdit 中不起作用
  • 在我的浏览器 (Chrome) 中,它可以在没有触发器的情况下正常工作。
  • 它是作为插件部署并安装到工作表中的吗?
【解决方案2】:

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

为了测试您的触发功能,您必须首先将您的工作表插件部署为某种受限应用(以绕过 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    相关资源
    最近更新 更多