我有这个Google脚本使用onOpen()来设置界面菜单。这些菜单会触发导入功能:
ListView
我还设置了一个时间触发器,每晚运行function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Actions')
.addItem('Refresh', 'refreshData')
.addToUi();
}
function refreshData() {
// code that does stuff
}
。
每天早上我收到一封电子邮件,告诉我发生了以下错误:refreshData()
时间触发器中没有UI是有意义的,但是如何检测我何时触发并阻止此代码运行?
我试过了:
Cannot call SpreadsheetApp.getUi() from this context.
/ try
=>围绕有问题的代码错误未被捕获答案 0 :(得分:1)
您可以在时间触发器中使用event object来确定该功能是否由用户触发或运行,如下所示:
function refreshData(e) {
Logger.log(e)
if(e == undefined){ //If it was run from the menu e will be undefined.
var ui = SpreadsheetApp.getUi()
ui.alert("Not a time trigger")
}
var ss =SpreadsheetApp.getActive()
var sheet =ss.getSheetByName("Sheet2")
var dt = new Date()
sheet.appendRow([dt.toString(),"Triggered"])
}