1

該腳本出色地將電子郵件拖入我的工作表。我的問題是,該功能只拉取列出的前兩個字段。例如,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); 
    }} 

回答

2

你的代碼很好,問題在於你如何構建二維數組。

.push()方法中,您使用方括號 - [] - 正在另一個陣列中另一個陣列內另一個陣列內的陣列中構建陣列,在下面的屏幕截圖中更容易看到它。 enter image description here

你需要的是一個垂直行數組的水平單元陣列。 enter image description here

因此改變:

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

James - 非常感謝您!你的修復工作,我一定會與你的日期建議。 - 喬什 –

相關問題