Javascript 谷歌脚本不会触发
我正在努力让我的脚本在早上6点自动运行。我已经设置了触发器,在“6-7 am”之间的“日计时器”上运行这个脚本“时间驱动”。我没有收到任何失败通知(设置为立即向我发送电子邮件),但脚本没有运行。当我手动运行它时,它完全按照我所希望的那样工作,但整个要点是使它自动化,所以我不确定我在这里做错了什么。我查找了其他实例,它们似乎已通过删除并重新添加触发器得到修复,但这并不能解决我的问题。我的脚本中有什么东西阻止自动运行吗Javascript 谷歌脚本不会触发,javascript,google-apps-script,google-sheets,google-apps,Javascript,Google Apps Script,Google Sheets,Google Apps,我正在努力让我的脚本在早上6点自动运行。我已经设置了触发器,在“6-7 am”之间的“日计时器”上运行这个脚本“时间驱动”。我没有收到任何失败通知(设置为立即向我发送电子邮件),但脚本没有运行。当我手动运行它时,它完全按照我所希望的那样工作,但整个要点是使它自动化,所以我不确定我在这里做错了什么。我查找了其他实例,它们似乎已通过删除并重新添加触发器得到修复,但这并不能解决我的问题。我的脚本中有什么东西阻止自动运行吗 function getMessagesWithLabel() { var
function getMessagesWithLabel() {
var destArray = new Array();
var label= GmailApp.getUserLabelByName('Personal/Testing');
var threads = label.getThreads(0,2);
for(var n in threads){
var msg = threads[n].getMessages();
var body = msg[0].getPlainBody();
var destArrayRow = new Array();
destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages');
for(var m in msg){
destArrayRow.push(msg[m].getPlainBody());
}
destArray.push(destArrayRow);
}
Logger.log(destArray);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
if(ss.getLastRow()==0){sh.getRange(2,1).setValue('getMessagesWithLabel() RESULTS')};
sh.getRange(2,1,destArray.length,destArray[0].length).setValues(destArray);
}
我不是100%确定,但原因可能是在触发器期间,如果脚本未直接链接到电子表格(电子表格已关闭),则没有“ActiveSpreadsheet”。因此,您应该尝试使用:
var ss = SpreadsheetApp.openById(id); // id is the id of the spreadsheet
// https://docs.google.com/spreadsheets/d/id_is_here/
var sh = ss.getSheetByName(name); // name of the actual sheet ("Sheet 1" for example)
否则,我看不出您的代码有什么问题(除了使用label.getThreads(0,2),它将要引入的最大线程数设置为2,但我认为这是故意的)
另外,你设置的是2,1,而不是我假设的1,1英寸
if(ss.getLastRow()==0){sh.getRange(2,1).setValue('getMessagesWithLabel() RESULTS')};
问题是由于在检索UI上显示的工作表时使用了
getActiveSheet
,但当时间驱动触发器运行时,UI上没有显示工作表
将getActiveSheet替换为或更好地通过其ID获取工作表(有关详细信息,请参阅)
参考: