Google apps script - Custom menu to run custom funtion
我在这个项目上发布了很多次,非常感谢收到的帮助:)
令我难以理解的是:我有一个Google表格,其中包含5个单独的表格,一个Master和4个单独的表格。我为此编写了一个"发送电子邮件"功能,该功能可以按预期工作,并且在4张纸中的每张纸中的某个特定框包含"是"时触发。
我的问题围绕着将此脚本与触发器绑定在一起。我收到了先前的建议,即创建一个自定义菜单,该菜单在选择时会触发脚本。我能够添加菜单,将其绑定到简单的onOpen()触发器,并使它显示在工作表中,但它不会运行我的脚本:
1 2 3 4 5 6 7 8 9 10 11 12 | function onOpen() { var ui = SpreadsheetApp.getUi(); // Or DocumentApp or FormApp. ui.createMenu('Send Emails') .addSubMenu(ui.createMenu('Send Emails For:') .addItem('Miranda Sheet', 'menuItem1') .addItem('Piper Sheet', 'menuItem2') .addItem('Lowes Sheet', 'menuItem3') .addItem('Golden Sheet', 'menuItem4')) .addToUi(); } //actions for menu items are below... |
该脚本的目的是发送电子邮件,因此我现在知道将菜单绑定到可安装的onOpen()触发器。那是我似乎无法指甲的部分。如果我更改函数名称,并通过资源>所有触发器将onOpen()绑定到该函数,则菜单消失:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function addMenu() { var ui = SpreadsheetApp.getUi(); // Or DocumentApp or FormApp. ui.createMenu('Send Emails') .addSubMenu(ui.createMenu('Send Emails For:') .addItem('Miranda Sheet', 'menuItem1') .addItem('Piper Sheet', 'menuItem2') .addItem('Lowes Sheet', 'menuItem3') .addItem('Golden Sheet', 'menuItem4')) .addToUi(); } function menuItem1() { var ui = SpreadsheetApp.getUi(); //Prompt user for confirmation to send emails var responseMir = ui.alert('Are you sure you want to send emails?', ui.ButtonSet.YES_NO); // Process the user's response. if (responseMir === ui.Button.YES) { //Test alert //ui.alert('You clicked the first menu item!'); } } |
因此,我的问题有两个:
我的菜单在哪?
将功能绑定到触发器之后,如何将菜单项绑定到脚本?似乎我应该能够在上面的If语句下说"在这里做东西"。我说错了吗?
谢谢你的想法! (我保证我会更好:)
只需清楚一点,就
编写完函数并希望测试选项后,首先需要运行它。 您可以通过以下两种方式执行此操作:
请注意,一旦运行了添加菜单的功能,则仅在更改菜单本身时才需要重新运行它。 如果您对
阅读注释,我将第二次引用Zig Mandel,如果您沿这条路线使用菜单来启动功能,则无需