我有一段代码可以在google工作表中的任何编辑中运行,如下所示:
function onEdit(e) {
Browser.msgBox("I pop up on Edit!");
}
但是,当它作为附加组件在Chrome网上应用店中部署和发布时,似乎无法正常工作......我在其他方法中使用Browser.msgBox并不参与其中编辑触发器,它们工作正常。
我尝试使用模态对话框,ui警报,备注,html弹出窗口和Toast消息来代替Browser.msgBox,但它们都不适用于编辑触发器功能。
我能找到的唯一理由是编辑触发器与Google Spreadsheets Add-ons中的弹出框不兼容。我能否对此有所了解?
答案 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);
}
如果您想了解详细信息,请查看https://developers.google.com/apps-script/reference/base/ui