如何解决为时间触发器添加 Null 选项以避免“....failed to finish successfully”错误报告
目标:为新电子邮件按时运行脚本并发送到 Google Sheet 标签 问题:脚本将成功运行,但如果在我设置定时触发器来监控新 Gmail 时找不到未读的 Gmail 线程,则会创建“...无法成功完成”报告,使用特定线程(电子表格名称)。
非程序员所以为代码道歉!
function getGmailEmails(){
var spreadSheetName = SpreadsheetApp.getActiveSpreadsheet().getName();
var subLabelVariable = "xxxxx" + spreadSheetName;
var label = GmailApp.getUserLabelByName(subLabelVariable);
var threads = label.getThreads();
var sentToSheet = GmailApp.getUserLabelByName("SenttoSheet");
for(var i = threads.length - 1; i >=0; i--){
var messages = threads[i].getMessages();
for (var j = 0; j <messages.length; j++){
var message = messages[j];
if (message.isUnread()){
extractDetails(message);
GmailApp.markMessageRead(message);
}
}
threads[i].addLabel(sentToSheet);
}
}
function extractDetails(message){
var dateTime = message.getDate();
var subjectText = message.getSubject();
var senderDetails = message.getFrom()
var sentTo =message.getTo();
var bodyContents = message.getPlainBody();
var messageLink = message.getId();
var emailLink = "https://mail.google.com/mail/u/0/#all/" + messageLink;
var type = "From: " + senderDetails + '\n' + "SentTo: " + sentTo + '\n' + emailLink;
var contactHistorySheet = SpreadsheetApp.getActiveSpreadsheet();
var contactHistorySheetName = contactHistorySheet.getSheetByName("xxxxxxxx"); contactHistorySheetName.appendRow([dateTime,type,subjectText,bodyContents]);
}
解决方法
if(threads) {
for(var i = threads.length - 1; i >=0; i--){
var messages = threads[i].getMessages();
for (var j = 0; j <messages.length; j++){
var message = messages[j];
if (message.isUnread()){
extractDetails(message);
GmailApp.markMessageRead(message);
}
}
threads[i].addLabel(sentToSheet);
}
}
,
已解决:触发器设置为 15 分钟检查周期,并且在 24 时间段内调用次数过多。未设置为每小时检查一次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。