You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script调用Tasks.Tasklists.list仅返回20条,设置maxResults无效求助

解决Google Apps Script调用Tasks API仅返回20个任务列表的问题

我之前也碰到过一模一样的问题,这其实是Google Tasks API的分页机制在起作用,下面给你拆解问题并提供完整解决方案:

问题根源

Google Tasks API的Tasklists.list()接口默认仅返回20条结果,而且maxResults参数有上限——最多只能设为100。哪怕你把maxResults设成100,如果任务列表总数超过100,接口也只会返回第一页的100条,剩余结果需要通过**分页令牌(nextPageToken)**循环获取。你之前的代码只调用了一次接口,没处理分页逻辑,所以不管怎么调整maxResults,最多只能拿到第一页的内容。

完整解决方案代码

要获取所有任务列表,你需要循环调用接口,直到响应中不再返回nextPageToken为止:

function listAllTaskLists() {
  var allTaskLists = [];
  var requestParams = {
    maxResults: 100 // 这是API允许的单页最大返回数
  };

  do {
    // 调用接口获取当前页的任务列表
    var response = Tasks.Tasklists.list(requestParams);
    // 如果当前页有结果,合并到总列表中
    if (response.items) {
      allTaskLists = allTaskLists.concat(response.items);
    }
    // 更新请求参数,带上下一页的令牌
    requestParams.pageToken = response.nextPageToken;
  } while (requestParams.pageToken); // 直到没有下一页令牌,停止循环

  // 输出总数量和所有列表信息
  Logger.log('总任务列表数量: ' + allTaskLists.length);
  allTaskLists.forEach(function(list, index) {
    Logger.log('%d. 列表名称: %s | 列表ID: %s', index + 1, list.title, list.id);
  });
}

关键要点说明

  • 分页令牌的作用:每次调用接口后,如果还有未返回的结果,API会在响应里生成nextPageToken,把这个令牌作为参数传入下一次调用,就能拿到下一页的内容
  • maxResults上限:Google Tasks API明确规定maxResults的最大值是100,无法设置更大的数值,所以超过100条的任务列表必须通过分页获取
  • 权限确认:确保你的脚本已经获得正确授权,需要包含https://www.googleapis.com/auth/tasks(读写权限)或https://www.googleapis.com/auth/tasks.readonly(只读权限)的授权范围

内容的提问来源于stack exchange,提问作者Alain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:37:01