我正在尝试使用下面的代码,但在尝试运行时遇到错误。它应该寻找带有设置标签的gmail,然后将电子邮件正文(已经剥离HTML)放入google表格。
var SEARCH_QUERY = "label:inbox is:unread to:me";
// 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);
}
}
我收到错误:
TypeError:无法读取属性&#34;长度&#34;来自undefined。 (第20行,文件&#34;测试&#34;)
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
快速浏览array2d
似乎不是一个二维数组,而是一个简单的数组,由于array2d[0].length
而抛出。您只需将正文推送到getEmails_()
数组
emails
似乎只返回一个字符串数组
答案 1 :(得分:0)
我已经设法让下面的代码完成我最初尝试做的事情,所以我想我会分享这个,以便其他人可以实现我想要做的事情。您需要做的就是插入要搜索的Gmail电子邮件标签。我不想将电子邮件主题放入电子表格中,因此我将其从ss.appendRow([dat,msg])行中删除。如果需要,只需将其重新添加即可。 感谢大家的帮助。
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("GMAIL EMAIL LABEL NAME HERE");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody().replace(/<.*?>/g, '\n').replace(/^\s*\n/gm, '').replace(/^\s*/gm, '').replace(/\s*\n/gm, '\n');
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([dat, msg])
}
threads[i].removeLabel(label);
}
}