【问题标题】:Get multiple Threads by ThreadID in Google Apps Script's GmailApp Class在 Google Apps Script GmailApp 类中按线程 ID 获取多个线程
【发布时间】:2014-11-18 04:55:16
【问题描述】:

我有一个字符串数组,其中每个值代表一个 Gmail Threadid。这看起来像这样:

var threadArray = [threadId1, threadId2, threadId3, threadId4, threadId5];

我想将 Gmail 标签应用于我的线程 ID 数组中的每个元素,但我目前的方法效率不高,并且执行时间太长。见下文:

for (var i = 0; i < threadArray.length; i++)
{
    thread = getThreadById(threadArray[i]) // this statement takes too long (several seconds) to execute!!
    thread.addLabel(exampleLabel);
}

将 Gmail 标签应用于 Gmail ThreadId 数组中的每个 Gmail 线程的最佳方法是什么?

Gmail 提供像 getInboxThreads() 这样的函数,它一次检索多个线程以返回 GmailThread[],但我不清楚如何完全基于线程 ID,而不是我的整个收件箱来构建自己的 GmailThread[]。

有没有其他人遇到过这个问题或找到了解决方法?我在这里发现了一个类似的未解决问题:https://code.google.com/p/google-apps-script-issues/issues/detail?id=2598

【问题讨论】:

    标签: google-apps-script gmail


    【解决方案1】:

    这样的任务花费很长时间并不是什么问题,您可以根据计时器触发器轻松管理(相对)小束。

    我有一个每天晚上运行的类似脚本,它运行良好......它运行了 4 分钟,然后稍等片刻,直到所有线程都被处理完。

    您只需要存储从哪里开始的索引(在 scriptProperties 中)并测量脚本执行期间经过的时间。

    【讨论】:

    • 谢谢!我将使用 ScriptProperties 和基于时间的触发器来管理执行。这将解决我的问题。根据您的经验,“稍等”部分是否可以像任何基于时间的触发器增量一样短?
    • 我使用了一个每 5 分钟触发一次的触发器,并将执行时间限制在 4 分钟左右……所以我有 1 分钟的时间来确保我不会“重叠”。
    • 不客气 :-) 请考虑接受答案...谢谢
    • 嗨,Serge,在我的执行过程中“测量经过时间”的简单方法是什么?我是否应该在我的脚本开头设置一个计时器变量 var timer = currentTime,然后根据一些“当前时间”-currentTime 定期确定“经过时间”的概念?
    • 正是 :-) 这就是我说“大约 4 分钟”的原因,因为它取决于“步数”的大小,即一个循环迭代的持续时间。
    猜你喜欢
    • 2018-02-16
    • 2016-12-16
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多