自定义菜单 onOpen 不显示
Custom menu onOpen does not show
此代码段在打开 sheet 时创建自定义菜单,如预期的那样:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('First item', 'menuItem1')
.addToUi();
}
function menuItem1() {
SpreadsheetApp.getUi().showModelessDialog(userInterface, title)
.alert('You clicked the first menu item!');
}
添加这一行:
var CALNAME= CalendarApp.getDefaultCalendar();
阻止自定义菜单显示,除非我手动运行 onOpen()
。我可以使用函数修复它:
function CALNAME() {
return CalendarApp.getDefaultCalendar();
}
但我想了解为什么分配变量不起作用。
当您在 GAS 中启动脚本时(在本例中,open 事件触发 onOpen 函数),GAS 加载所有代码,执行主体中的代码(在本例中,var CALNAME= CalendarApp.getDefaultCalendar() ; ), 然后执行 onOpen.
在评估 CalendarApp.getDefaultCalendar() 时退出执行似乎是一个错误,所以 onOpen 永远不会执行。
常见的原因是:出于安全原因,open 事件在"privilegesLESS" 环境中执行onOpen,因此您对onOpen 的功能非常有限。您似乎无法在该环境中执行 CalendarApp.getDefaultCalendar()。
尝试从 onOpen 调用 CALNAME(),您会看到它中断了。
答案是使用可安装的触发器,而不是标准的 onOpen。
参见 Installable Triggers Reference 中的 'Managing triggers manually' 位。
感谢Serge insas for the tip in this question
此代码段在打开 sheet 时创建自定义菜单,如预期的那样:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('First item', 'menuItem1')
.addToUi();
}
function menuItem1() {
SpreadsheetApp.getUi().showModelessDialog(userInterface, title)
.alert('You clicked the first menu item!');
}
添加这一行:
var CALNAME= CalendarApp.getDefaultCalendar();
阻止自定义菜单显示,除非我手动运行 onOpen()
。我可以使用函数修复它:
function CALNAME() {
return CalendarApp.getDefaultCalendar();
}
但我想了解为什么分配变量不起作用。
当您在 GAS 中启动脚本时(在本例中,open 事件触发 onOpen 函数),GAS 加载所有代码,执行主体中的代码(在本例中,var CALNAME= CalendarApp.getDefaultCalendar() ; ), 然后执行 onOpen.
在评估 CalendarApp.getDefaultCalendar() 时退出执行似乎是一个错误,所以 onOpen 永远不会执行。
常见的原因是:出于安全原因,open 事件在"privilegesLESS" 环境中执行onOpen,因此您对onOpen 的功能非常有限。您似乎无法在该环境中执行 CalendarApp.getDefaultCalendar()。
尝试从 onOpen 调用 CALNAME(),您会看到它中断了。
答案是使用可安装的触发器,而不是标准的 onOpen。
参见 Installable Triggers Reference 中的 'Managing triggers manually' 位。 感谢Serge insas for the tip in this question