我想看看如何在执行此脚本后标记读取的消息。我已经通读了Class GmailApp,但我还是个新手,不知道该怎么做。
这个脚本对我来说是成功的,如果它根据搜索标准将电子邮件数据拉到google sheets中,然后将这些邮件标记为已读。目前,它只会将电子邮件放到google sheets中。
谢谢您抽时间见我。
var SEARCH_QUERY = "label:aggieworks is:unread to:me subject:*WO:*";
// Credit: https://gist.github.com/oshliaer/70e04a67f1f5fd96a708
function getEmails_(q) {
var emails = [];
var threads = GmailApp.search(q);
for (var i in threads) {
var msgs = threads[i].getMessages();
for (var j in msgs) {
emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
.replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')
]);
}
}
return emails;
}
function appendData_(sheet, array2d) {
sheet.getRange(sheet.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}
function saveEmails() {
var array2d = getEmails_(SEARCH_QUERY);
if (array2d) {
appendData_(SpreadsheetApp.getActiveSheet(), array2d);
}
}
发布于 2017-07-23 00:44:52
假设函数按您所拥有的方式工作。这应该将消息标记为已读。
function getEmails_(q)
{
var emails = [];
var threads = GmailApp.search(q);
for (var i in threads) {
var msgs = threads[i].getMessages();
for (var j in msgs)
{
emails.push([msgs[j].getBody().replace(/<.*?>/g, '\n')
.replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')]);
msgs[j].markRead();
}
}
return emails;
}
发布于 2018-08-23 03:36:07
长度错误的原因是array2d
为零。appendData_
函数失败。
在if()
语句中执行appendData_
函数之前,需要评估array2d
内容。
我还不知道那会是什么样子
https://stackoverflow.com/questions/45246992
复制相似问题