如预期的那样,此代码段在打开工作表时创建了一个自定义菜单:
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永远不会执行。
常见的原因是:出于安全原因,打开事件在“无特权”环境中执行onOpen,因此您在onOpen可以执行的操作上受到很大限制。看来您无法在该环境中执行CalendarApp.getDefaultCalendar()。
尝试从onOpen调用CALNAME(),您将看到它中断。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句