Google云端硬盘电子表格脚本问题

时间:2014-01-08 14:51:03

标签: javascript excel scripting google-apps-script typeerror

我从网络上的某个地方复制了这个功能。我的目标是将我的Gmail帐户中特定标记的电子邮件正文导入Google电子表格。虽然我在编码时并不完全无能为力,但我对这些东西并不熟悉。

可能相关的一些细节:我尝试导入的每个电子邮件都不是对话,它们是收到的单个电子邮件,没有响应,也没有线程中的早期消息。我希望每个电子邮件的整个正文都放在电子表格的单个单元格中。

实际上,只有主题放在我的电子表格中。我怎么能把它带到身体呢?我觉得它被放置在数组中,但是当循环setValue时,它会被跳过。

很多爱,伙计们!

代码:

function getMessagesWithLabel() {
 var destArray = new Array();
  var threads = GmailApp.getUserLabelByName('abc').getThreads(1,10);

  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].getSubject());
           }
  destArray.push(destArrayRow);           
        }
Logger.log(destArray);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
if(ss.getLastRow()==0){sh.getRange(1,1).setValue('getMessagesWithLabel() RESULTS')};
sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray)
}

1 个答案:

答案 0 :(得分:0)

你没有在脚本的任何地方使用.getBody()吗?在这种情况下,我将每条消息存储为具有主题和正文的对象作为单独的值:

var msg = threads[n].getMessages();
var contentArray = [];

for(var i = 0; i < msg.length; i++){

  var obj = {
    subject: msg[i].getSubject(),
    body: msg[i].getBody()       
  };

  contentArray.push(obj);

}

然后可以使用以下表示法迭代这些值:

console.log(contentArray[0].subject);
console.log(contentArray[0].body);