谷歌应用程序脚本逐行输出电子邮件

时间:2016-08-13 12:48:54

标签: google-apps-script google-sheets

我有一个工作表脚本,用于捕获特定电子邮件的正文,其中包含一个表格。到目前为止,这已经工作正常,但我现在已达到单个单元问题的50000字符限制。我正在使用:

=转置(拆分(" C1",CHAR(10),TRUE))

为了逐行拆分内容,所以现在需要编写脚本,以便将电子邮件正文逐行传递到工作表。

我最好的方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

最终自己想出来,感谢这里的精英响应者(Serge / Mogsdad / Sandy等人),他们对以前的问题的回答提供了所有的线索。首先使用Serge的getMessage代码。我知道,比使用appendRow更好的方法,但有些不适用于消息形成不良的html内容(例如,将行放入数组会导致范围宽度错误)。我的脚本只调用一封电子邮件,最新一封带有所选标签的电子邮件。

以下是涵盖它的功能:

function getMessageWithLabel() {
 var destArray = new Array();
  var threads = GmailApp.getUserLabelByName('<GMailLabel>').getThreads(0,1);

  for(var n in threads){
        var msg = threads[n].getMessages();
        var destArrayRow = new Array();
        destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages');
          for(var m in msg){
            destArrayRow.push(msg[m].getBody());
           }
  destArray.push(destArrayRow);           
        }

  //open spreadsheet and set sheet for appending data
  var ss = SpreadsheetApp.openById('<Google Spreadsheet ID>');
  var sh5 = ss.getSheets()[4];

  //get number of lines in content
  var lines = destArrayRow[0].split('\n');
  var length = lines.length;

  //appendRow for each line in content  
  for (var i = 0; i <= length; i++) {
   sh5.appendRow([lines[i]]);
  }

}