如何在Google脚本中检查完成的Google任务?

时间:2018-10-18 02:56:23

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

我正在尝试编写一个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"

3 个答案:

答案 0 :(得分:0)

我也有这个问题。您需要告诉Task API,您希望List Tasks也返回已完成的任务。

我在这里找到了答案: https://developers.google.com/tasks/v1/reference/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";
}

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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