将Gmail拉入Google表格

问题描述:

该脚本出色地将电子邮件拖入我的工作表。我的问题是,该功能只拉取列出的前两个字段。例如,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); 
    }} 

你的代码很好,问题在于你如何构建二维数组。

.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 - 非常感谢您!你的修复工作,我一定会与你的日期建议。 - 乔什 –