大家好。我的脚本将来自标记文件夹的邮件中的“未读”传入消息解析为 Google 电子表格,然后将其标记为“已读”。但有时会出现故障:脚本被执行,将字母标记为“已读”,但不写入表。也就是说,事实上,记录器中有一条记录,其中包含这些字母的所有内容,但它们并没有写入表中。理论上,您需要检查数据是否已写入表中,然后才将字母标记为“已读”。或者代码中存在周期性的错误(HZ)。各位大侠帮忙,我在学习。
function GmailmarkReadEnd() {
//this is just the stuff that recognizes what spreadsheet you're in
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheet = ss.getSheetByName('Лист2'); //gets the right sheet(указать название листа для записи)
/* searches your GMail for emails matching things "label:unread" + " label:support"
(support-это название папки в которую собираются письма) */
var query = "label:unread" + " label:support";
var threads = GmailApp.search(query);
var supportStats = [];
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var m = 0; m < messages.length; m++) {
var from = messages[m].getFrom(); //from field
var to = messages[m].getTo(); //to field
var time = messages[m].getDate(); //date field
var subject = messages[m].getSubject(); //subject field
var body = messages[m].getPlainBody(); //body field(заменить на getBody для html)
var mId = messages[m].getId(); //id field to create the link later
if (query === "label:unread" + " label:support") {
supportStats.push([from,to,time,subject,body,'https://mail.google.com/mail/u/0/#inbox/'+mId]);
Logger.log(supportStats) // Лог про который говорил.
}
}
}
if(!threads.length) return; // если нет непрочитанных - ничего не делать.
sheet.getRange(SpreadsheetApp.getActiveSheet().getLastRow()+1,2,supportStats.
length,supportStats[0].length).setValues(supportStats); //writes to the spreadsheet(записывает в электронную таблицу)
GmailApp.markThreadsRead(threads); // помечает, как прочитанное
// ***Сортировка записанных данных по дате***
sheet.getRange('D:D').activate();
sheet.sort(4, false);
}
大家好。感谢那些帮助过的人。这是最终版本,带有评论(什么,是的,如何),适合像我这样的菜鸟😉。用英语讲。论坛帖子,您可以查看详细信息
代码本身: