【问题标题】:Pull Gmails into a Google Sheet将 Gmail 拉入 Google 表格
【发布时间】:2017-11-20 20:45:05
【问题描述】:

这个脚本非常适合将电子邮件拉入我的工作表。我的问题是该函数仅提取列出的前两个字段。例如,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);
    }}

【问题讨论】:

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


    【解决方案1】:

    您的代码很好,问题是您如何构造二维数组。

    .push() 方法中,您使用方括号 - [] - 在另一个数组中的另一个数组中的另一个数组中的另一个数组中的另一个数组中的另一个数组中的另一个数组中构建一个数组,在下面的屏幕截图中更容易看到它。

    您需要的是 1 个水平单元格阵列和一个垂直行阵列。

    所以改变:

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

    【讨论】:

    • 詹姆斯 - 非常感谢!您的修复工作有效,我一定会使用您的日期建议。 - 乔希
    • @JoshuaRoberts 请考虑接受我的回答。
    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多