将Gmails拉入Google表格

时间:2017-06-18 16:05:52

标签: javascript arrays multidimensional-array google-apps-script google-sheets

这个脚本非常出色地将电子邮件拉入我的工作表。我的问题是该函数只拉出列出的前两个字段。例如,getPlainBody,getSubject - 即使要求更多字段。因此,我没有一个函数可以提取我需要的所有字段(getPlainBody,getSubject,getTo,getDate,getFrom),而只获得前两个(getPlainBody,getSubject)。是否有明显的修改将所有5个字段拉入工作表?

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);
    }}

1 个答案:

答案 0 :(得分:3)

您的代码很好,问题是如何构建2D数组。

.push()方法中,你使用方括号 - [] - 在另一个数组中的另一个数组内的另一个数组内的数组中构建一个数组,在截图中更容易看到它下面。 enter image description here

你需要的是1个水平单元阵列,其中有一排垂直行。{{3}}

所以改变:

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')