【问题标题】:How does one check for completed Google Tasks in a Google script?如何在 Google 脚本中检查已完成的 Google 任务?
【发布时间】:2019-03-22 19:23:34
【问题描述】:

我正在尝试编写一个 Google 脚本来实现此伪代码中包含的想法:

access a specific Google tasklist

for each task in that tasklist {
    if the task is completed {
        perform an operation
    }
}

我遇到了一个问题——当我的脚本访问特定任务列表时,我只能获取未完成任务的信息,而完成的任务似乎已经消失了。

这个想法起初似乎很容易。我从 Google 的 Tasks Service 网页复制了代码,该网页应该“列出给定任务列表中的任务”(https://developers.google.com/apps-script/advanced/tasks),并在 for 循环中添加了一条 if 语句:

function listTasks(taskListId) {
  var tasks = Tasks.Tasks.list(taskListId);
  if (tasks.items) {
    for (var i = 0; i < tasks.items.length; i++) {
      var task = tasks.items[i];

      Logger.log('Task with title "%s" and ID "%s" was found.',
                 task.title, task.id);

      if (task.status == "completed") {
          //perform operation
      }
    }
  } else {
    Logger.log('No tasks found.');
  }
}

但是,当我检查日志时,我注意到列出了所有未完成的任务,但没有列出我已完成的任务。我尝试在仅包含已完成任务的任务列表上运行脚本,日志输出为“未找到任务”。

有谁知道如何在给定的任务列表中找到已完成的任务?似乎这应该是可能的,因为 Zapier 为已完成的任务执行操作,如另一篇文章所述:How to trigger Google Script when a Google Task is marked "completed"

【问题讨论】:

  • 哎呀。我用搜索栏的时候没找到stackoverflow上的文章,但是我刚查了一下google-tasks-api标签页,貌似有人遇到了同样的问题,已经上google了:stackoverflow.com/questions/52179087/… .如果有人知道更多信息,请告诉我们,但看起来这可能只是一个错误。

标签: google-apps-script google-tasks-api google-tasks


【解决方案1】:

您需要告诉 Task API 您希望 List Tasks 也返回已完成的任务。

我使用了 PHP,您必须告诉 Google 服务您想要“隐藏”任务。似乎已完成 == 隐藏。如果要删除,也可以发送该参数。

$optParams = array(
    'showHidden' => true,
    'showDeleted' => true,
);

$GTresults = $service->tasks->listTasks($tasklist, $optParams);

在这里编辑: 添加了一个基于完成的循环示例:

$retrievedTask = $service->tasks->get($tasklist, $taskID);

if($retrievedTask->getStatus() == "completed") {
    echo "GT uncompleted", "\n";
}

【讨论】:

    【解决方案2】:

    只需将可选参数发送到函数中:

    var optionalArgs = {
        maxResults: 100,
        showHidden: true,
        showDeleted: true
      };
    var tasks = Tasks.Tasks.list(taskListId, optionalArgs);
    

    【讨论】:

      【解决方案3】:

      我有同样的问题。 我发现如果我通过旧的 google 任务 UI (https://mail.google.com/tasks/canvas) 完成任务,我可以通过 API 完成任务。

      如果我通过新的 gmail UI 完成任务,我怎么会无法获得这些。 正如您在评论中指出的那样,此问题可能是由新的 gmail UI 引起的。

      【讨论】:

        猜你喜欢
        • 2018-10-25
        • 1970-01-01
        • 2012-05-13
        • 2013-08-07
        • 1970-01-01
        • 1970-01-01
        • 2019-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多