Google App Scripts Task API:未指定showHidden:true为何丢失已完成任务?
Google Tasks API的默认逻辑里,已完成的任务会自动被标记为"隐藏"状态——哪怕showCompleted参数默认值是true,如果没显式指定showHidden: true,这些已完成的隐藏任务依然不会被返回。
看你的代码例子:
未指定showHidden: true的情况
const tasks = Tasks.Tasks.list(taskListId); console.log(tasks.items.length); for (let i = 0; i < tasks.items.length; i++) { console.log(tasks.items[i]); }
输出:
1 Test 2
这里只返回未完成的Test 2,因为已完成的Test 1被标记为隐藏,默认接口不会返回隐藏项。
指定showHidden: true的情况
const tasks = Tasks.Tasks.list(taskListId,{showHidden:true}); console.log(tasks.items.length); for (let i = 0; i < tasks.items.length; i++) { console.log(tasks.items[i]); }
输出:
2 Test 1 Test 2
此时showHidden: true会强制拉取所有隐藏项,包括已完成的任务,所以能拿到全部两个任务。
关键逻辑说明
showCompleted参数只是控制是否允许返回已完成任务,但Tasks对已完成任务的默认处理是将其设为隐藏状态。因此要获取已完成任务,必须同时开启showHidden: true——它才是决定是否返回隐藏项(包括已完成任务)的关键开关。
如果需要获取所有任务(已完成+未完成),调用接口时建议显式声明两个参数,代码更清晰:
const tasks = Tasks.Tasks.list(taskListId, { showCompleted: true, showHidden: true });
内容的提问来源于stack exchange,提问作者Dolav Soker
相关产品推荐
相关产品推荐

