如何调用已安装的onOpen()触发器?

时间:2014-01-23 13:11:55

标签: triggers google-apps-script

我对如何实现(和调用)可安装的onOpen()触发器存有疑问。我尝试了下面的方法,但它没有用。我做错了什么? 谢谢你的帮助!

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var myOnEdit = ScriptApp.newTrigger("installedOnOpen")
                           .forSpreadsheet(ss.getId())
                           .onOpen()
                           .create();    

function installedOnOpen() {
  var menuEntries = [
                     {name: My function menu name", functionName: "someFunction"}
                    ];
  ss.addMenu("My personalized menu", menuEntries);
}

1 个答案:

答案 0 :(得分:1)

Hello craft Apprentice,

关于您发布的代码:

 var myOnEdit = ScriptApp.newTrigger("installedOnOpen")
                           .forSpreadsheet(ss.getId())
                           .onOpen()
                           .create();  

不是函数,永远不会被调用。如果要启动此代码,则必须将其放在函数中:

function addOnOpenTrigger(){
  var sheet = SpreadsheetApp.getActive();
 ScriptApp.newTrigger("installedOnOpen").forSpreadsheet(sheet).onOpen().create();  
}

然后在您的功能installedOnOpen()上忘记了" {name:之后的var ss = SpreadsheetApp.getActiveSpreadsheet(); function addOnOpenTrigger(){ var sheet = SpreadsheetApp.getActive(); ScriptApp.newTrigger("installedOnOpen").forSpreadsheet(sheet).onOpen().create(); } function installedOnOpen() { var menuEntries = [ {name: "My function menu name", functionName: "someFunction"} ]; ss.addMenu("My personalized menu", menuEntries); } 来启动您的功能名称。
这里有完整的代码:

addOnOpenTrigger()

从脚本编辑器中,您必须启动函数{{1}}(当您不在时,它会询问您启动脚本的授权),现在如果您关闭并再次打开电子表格,您应该会看到新的菜单“我个性化的菜单”。

但是,如果您只想在电子表格中添加自定义菜单条目,最好的方法是使用特殊功能onOpen(),它将在电子表格的开头处启动(如果您没有在其中放置任何内容,需要特殊授权)。就像您在创建新脚本时可以获得的Google电子表格脚本模板一样 希望它对你有所帮助。
哈罗德