【问题标题】:How can I get the all messages in the inbox? (include reply)如何获取收件箱中的所有消息? (包括回复)
【发布时间】:2020-01-09 11:35:51
【问题描述】:

我在 Google Apps 脚本中使用以下代码,我想在收件箱中获取所有消息。此代码给出“无法将数组转换为数字[][]。(第 19 行,文件“代码”)”错误。如何修复此代码?

    var myspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var mysheet = myspreadsheet.getSheets()[0];
    var start = 0;
    var max = 19;
    var count = 0;
    while (count < 7) {
        var threads = GmailApp.getInboxThreads(start, max);
        var messages = GmailApp.getMessagesForThreads(threads);
        //var froms = [];
        messages.get
        for (var i = 0; i < threads.length; i++) {
            var thisThread = threads[i];
            var messages = thisThread.getMessages();
            var messageCount = thisThread.getMessageCount();
            for ( var m = 0; m<=messageCount; m++) {
              var lastMessage = messages[m];
              froms = ([lastMessage.getId(), lastMessage.getSubject(), lastMessage.getTo(), lastMessage.getFrom(), lastMessage.getCc(), JSON.stringify(lastMessage.getDate()), lastMessage.getReplyTo()]);
              mysheet.getRange(1, 1, froms.length, 7).setValues(froms);
              froms = [];
            }
        }
        start = start + 100;
        count++;
        }
}

【问题讨论】:

  • 使用setValues() 设置值时,您必须创建一个二维数组,因为此方法设置了一个矩形网格(N 行和 M 列)值。使用[[],[],...] 模式(以数组为值的数组) - 外部数组的每个元素代表一行,内部数组的每个元素代表一列

标签: javascript google-apps-script gmail-api


【解决方案1】:

尝试更改此设置:froms = ([lastMessage.getId(), lastMessage.getSubject(), lastMessage.getTo(), lastMessage.getFrom(), lastMessage.getCc(), JSON.stringify(lastMessage.getDate()), lastMessage.getReplyTo()]);

对此:froms = ([[lastMessage.getId(), lastMessage.getSubject(), lastMessage.getTo(), lastMessage.getFrom(), lastMessage.getCc(), JSON.stringify(lastMessage.getDate()), lastMessage.getReplyTo()]]);

但实际上,我认为您的脚本存在更大的问题。

我会使用这样的东西。但是我不能很好地测试它,因为我的收件箱里没有很多垃圾。

function emailsStuff() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheets()[0];
  sh.clearContents();
  var threads=GmailApp.getInboxThreads() 
  for(var i=0;i<threads.length;i++) {
    var messages=GmailApp.getMessagesForThread(threads[i]);
    for(var j=0;j<messages.length;j++) {
      var msg=messages[j];
      sh.appendRow([msg.getId(), msg.getSubject(), msg.getTo(), msg.getFrom(), msg.getCc(), JSON.stringify(msg.getDate()), msg.getReplyTo()]);
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    相关资源
    最近更新 更多