Gmail线程对象意外行为

时间:2014-01-26 08:41:46

标签: google-apps-script

我正在尝试编写一个Google Apps脚本,用于处理所有具有特定标签的电子邮件。

我正在使用GmailApp.search函数检索所有相关的电子邮件,但是当我尝试使用GmailThread class中的函数文档时,我收到一条错误消息,指出它无法找到功能

这是我的代码;

var incoming = "To_Bot"

function readBotsEmail()
{
  var emails = GmailApp.search("label:" + incoming);

  Logger.log("This is the 'emails' object:" + emails)


  var emailsLoopIndex = 0
  for (var email in emails)
  {
    emailsLoopIndex += 1;
    try
    {
      Logger.log("iteration " + emailsLoopIndex + "     " + email.getMessageCount());
    }
    catch(e)
    {
      Logger.log("iteration " + emailsLoopIndex + "     " + e);
    }
  }
}

这是记录器输出。

[14-01-26 03:40:00:909 EST] This is the 'emails' object:GmailThread,GmailThread
[14-01-26 03:40:00:911 EST] iteration 1     TypeError: Cannot find function getMessageCount in object 0.
[14-01-26 03:40:00:914 EST] iteration 2     TypeError: Cannot find function getMessageCount in object 1.

我哪里错了?

1 个答案:

答案 0 :(得分:1)

你应该避免使用模糊的变量名称,“电子邮件”和“电子邮件”在谈论一方的线程和另一方的索引整数时是非常糟糕的选择...

你的问题主要来自两个变量之间的混淆,你使用电子邮件而不是电子邮件* S *并且似乎忘记了你的值是一个线程数组,因此需要被索引。< / p>

这是你的工作代码,只有一个字母差异;-)和几个括号......

function readBotsEmail()
{
  var emails = GmailApp.search("label:" + incoming);

  Logger.log("This is the 'emails' object:" + emails)


  var emailsLoopIndex = 0
  for (var email in emails)
  {
    emailsLoopIndex += 1;
    try
    {
      Logger.log("iteration " + emailsLoopIndex + "     " + emails[email].getMessageCount());
    }
    catch(e)
    {
      Logger.log("iteration " + emailsLoopIndex + "     " + e);
    }
  }
}

也就是说,你仍然需要在这个脚本上做很多工作才能让它返回一些有趣的东西......现在它告诉你线程的数量和它们有多少消息...无论如何,这是一个好的开始...

祝你好运!