使用示例代码将电子邮件主题导入Google电子表格

时间:2015-03-15 14:59:19

标签: google-apps-script gmail

我正在努力使代码工作在Stackoverflow post

上找到

@Serge insas发布了以下代码

function getMessagesWithLabel() {
     var destArray = new Array();
      var threads = GmailApp.getUserLabelByName('Facebook').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)
    }

因此,在我尝试使此代码工作时,我创建了一个名为“Facebook”的gmail“标签”。

  • 我将电子邮件移到了'Facebook'标签上。
  • 然后我创建了一个电子表格。
  • 我进入了该电子表格的脚本编辑器
  • 我创建了一个电子表格脚本
  • 我添加了上面发布的代码
  • 我运行了这些功能并授权他们
  • 我再次运行GetMessagesWithLabel函数,我收到以下错误。
  

TypeError:无法从undefined中读取属性“length”。 (第53行,文件“代码”)

第53行是     sh.getRange(ss.getLastRow()+ 1,1,destArray.length,destArray [0]。长度).setValues(destArray)

我希望有人可以帮助我让这个例子有用。

此致

克里斯

1 个答案:

答案 0 :(得分:2)

这一行:

var threads = GmailApp.getUserLabelByName('Facebook').getThreads(1,10);

有错误。

此方法:

getThreads(1,10)

应该有一个零参数而不是一个。

getThreads(0,10)

索引从零开始,而不是一个。您只有一封电子邮件在新的" Facebook"标签。起始索引为1,开始检索第二封电子邮件,然后最多为10。