使用Apps Script调用Google Drive API提取表格全部评论遇阻求助
解决Google Drive API获取所有Sheet评论的问题
问题根源
- 参数传递错误:原代码调用
Drive.Comments.list时参数格式错误,pageSize=arg的写法不符合Apps Script语法,需直接传入包含pageSize的配置对象。 - 未处理分页逻辑:Drive API的
comments.list默认分页返回,即便设置了pageSize,当评论总数超过设定值时,必须通过pageToken循环获取所有分页的评论。
修正后的代码
function listComments() { var sheetId = '(mySpreadsheetId)'; var allComments = []; var pageToken = null; // 循环获取所有分页的评论 do { var options = { pageSize: 100, pageToken: pageToken }; var response = Drive.Comments.list(sheetId, options); if (response.items && response.items.length > 0) { allComments = allComments.concat(response.items); } pageToken = response.nextPageToken; } while (pageToken); // 整理评论内容 var cList = []; for (var i = 0; i < allComments.length; i++) { cList.unshift([allComments[i].content]); } // 将评论写入指定工作表 var commentsheet = SpreadsheetApp.openById(sheetId).getSheets()[11]; if (cList.length > 0) { commentsheet.getRange("A1:A" + cList.length).setValues(cList); } Logger.log("共获取到 " + allComments.length + " 条评论"); }
关键修改说明
- 修复参数传递:将
pageSize正确放入配置对象,作为Drive.Comments.list的第二个参数传入。 - 添加分页循环:通过
nextPageToken判断是否存在下一页评论,循环调用API直至获取全部数据。 - 优化数据处理:将所有分页的评论合并到一个数组后统一处理写入工作表,避免重复操作。
内容的提问来源于stack exchange,提问作者jacobsonblanton
相关产品推荐
相关产品推荐

