【发布时间】:2019-09-09 08:03:23
【问题描述】:
我有一个脚本,可以将我的电子邮件正文从 Gmail 导入 google-sheet 单元格,基本上我会搜索已加星标的电子邮件并在最后将其带入我取消星标(下次运行时它不应该再次出现)时间)。但是,我遇到了一个问题,它带来了电子邮件的整个线程。澄清一下:我的 gmail 设置设置为“关闭会话视图”,这就是我在收件箱中看到它的方式,每个消息都是分开的,但看起来在 Gmail API 中它仍然存储为一个长线程...... 如何在没有整个线程的情况下只导入一个味精? (线程不是真正的对话,它只是来自同一发件人和同一主题的自动电子邮件,这就是 Gmail 将其视为线程的原因,所以如果有办法阻止它,那也会有所帮助。)
我的代码如下。
var SEARCH_QUERY = "label:web is:unread to:me is:starred";
function getEmails_(q) {
var emails = [];
emails.length = 0;
var threads = GmailApp.search(q);
for (var i in threads) {
var msgs = threads[i].getMessages();
for (var j in msgs) {
emails.push([msgs[j].getPlainBody().replace(/<.*?>/g, '\n')
.replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n')]);
msgs[j].unstar().refresh();
}
}
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.getActiveSpreadsheet().getSheetByName('Web
Email'), array2d);
}
}
【问题讨论】:
标签: google-apps-script google-sheets gmail