我已经在这个项目上发布了很多次,我非常感谢我收到的帮助:)
有些东西让我不知所措:我有一张Google表格,其中包含5张单独的表格,一张主表格和4张单独的表格 . 我已经为它编写了一个“发送电子邮件”功能,按预期工作,并且当4个单独的表格中的某个框包含“是”时触发 .
我的问题围绕将此脚本绑定到触发器 . 我收到了之前的建议,即创建一个自定义菜单,在选择时触发脚本 . 我能够添加菜单,将其绑定到一个简单的onOpen()触发器,并让它出现在工作表中,但它不会运行我的脚本:
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()通过资源>所有触发器绑定到该函数,我的菜单会消失:
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语句下说“在这里做东西” . 我错了吗?
谢谢你的想法! (我越来越好了,我保证:)
1 回答
为了清楚起见,应该没有从菜单中选择
onOpen()
功能的可安装触发器,因为它已经是一个触发器 .一旦编写了函数并且您希望测试选项,您首先需要它来运行 . 你可以这两种方式:
重新加载电子表格(请注意,这将关闭您的脚本标签!)
运行
onOpen()
函数请注意,一旦运行了添加菜单的功能,如果更改菜单本身,则只需重新运行它 . 如果您对
menuItem1()
进行了更改,那么您无需重新运行onOpen()
,因为菜单选择仍将在脚本中运行最新保存的代码 .阅读评论我将第二个Zig Mandel,如果你走这条路线并使用菜单启动功能,那么就不需要
onEdit
触发器,因为它们用于完全相同的目的 - 启动数据收集 .