Google Apps Script调用Drive.Drives.list仅返回10条共享网盘问题咨询
解决Google Apps Script调用Drive.Drives.list仅返回10条共享网盘的问题
问题原因
- Drive API的
Drives.list方法默认返回的最大条目数为10,且当共享网盘数量超过单页上限时,会返回nextPageToken标记用于拉取下一页数据,原代码没有处理分页逻辑也没有调整单页返回上限,因此无法获取完整列表。
注意:使用以下代码前需要先在Google Apps Script编辑器中启用高级Google服务中的Drive API:点击编辑器顶部「扩展」-「Apps Script」进入项目界面,点击左侧「服务+」,找到Drive API,添加即可使用。
修复后的完整代码
function getAllSharedDrives() { let allDrives = []; let pageToken = null; // 分页拉取所有共享网盘 do { const params = { maxResults: 100, // 单页最大返回100条(Drive API允许的单页上限) pageToken: pageToken }; const res = Drive.Drives.list(params); // 把当前页的网盘数据存入数组 if (res.items && res.items.length > 0) { allDrives = allDrives.concat(res.items.map(drive => ({ id: drive.id, name: drive.name }))); } // 获取下一页的令牌,没有的话就退出循环 pageToken = res.nextPageToken; } while (pageToken); // 输出所有共享网盘信息 allDrives.forEach(drive => { Logger.log(`网盘ID:${drive.id}`); Logger.log(`网盘名称:${drive.name}`); }); // 可直接返回allDrives数组给其他业务逻辑调用 return allDrives; }
代码调整说明
- 新增分页处理逻辑,通过
nextPageToken循环拉取所有页面的数据,直到没有下一页令牌为止 - 增加
maxResults参数,设置为Drive API允许的单页最大返回值100,减少请求次数 - 删除原代码中冗余的JSON序列化再反序列化的无用操作
内容的提问来源于stack exchange,提问作者Padmaraj Pichandi
相关产品推荐
相关产品推荐

