簡體   English   中英

將Gmail拉入Google表格

[英]Pull Gmails into a Google Sheet

該腳本可以很好地將電子郵件發送到我的工作表中。 我的問題是該函數僅提取列出的前兩個字段。 例如,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);
    }}

您的代碼很好,問題在於如何構造2D數組。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM