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