将Gmail拉入Google表格
问题描述:
该脚本出色地将电子邮件拖入我的工作表。我的问题是,该功能只拉取列出的前两个字段。例如,getPlainBody,getSubject - 尽管需要更多的字段。因此,我不需要一个函数来获取所需的所有字段(getPlainBody,getSubject,getTo,getDate,getFrom),我只能得到前两个(getPlainBody,getSubject)。是否有一个明显的修改,将所有5个字段放入工作表中?将Gmail拉入Google表格
function getEmails_(q) {
sh0.clear();
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].getPlainBody(), [msgs[j].getSubject(), [msgs[j].getDate(), [msgs[j].getTo(), [msgs[j].getFrom()
]]]]]);
}
}
return emails;
}
function appendData_(sh0, array2d) {
sh0.getRange(sh0.getLastRow() + 1, 1, array2d.length, array2d[0].length).setValues(array2d);
}
function saveEmails() {
var array2d = getEmails_(SEARCH_QUERY);
if (array2d) {
appendData_(sh0, array2d);
}}
答
你的代码很好,问题在于你如何构建二维数组。
在.push()
方法中,您使用方括号 - [] - 正在另一个阵列中另一个阵列内另一个阵列内的阵列中构建阵列,在下面的屏幕截图中更容易看到它。
因此改变:
emails.push([msgs[j].getPlainBody(), [msgs[j].getSubject(), [msgs[j].getDate(), [msgs[j].getTo(), [msgs[j].getFrom()]]]]]);
到
emails.push([msgs[j].getPlainBody(), msgs[j].getSubject(), msgs[j].getDate(), msgs[j].getTo(), msgs[j].getFrom()]);
就我个人而言,我平时总是格式化日期东西多一点可读性。您可以使用Utilities
来执行此操作。例如:格式:Thu Jun 15 2017 11:18:18 GMT+0700 (ICT)
至15/06/2017 @ 11:18
var formatDate = Utilities.formatDate(emails[i][2], 'GMT+07:00', 'dd/MM/yyyy @ HH:mm')
James - 非常感谢您!你的修复工作,我一定会与你的日期建议。 - 乔什 –