我最近发布了一个关于我的程序的另一个问题的问题。以下是我原始帖子的链接:如何将 Google 文档评论导出到特定的 Google 表格单元格
此程序将特定 Google 文档上的评论导出到特定的 Google 工作表,您可以在一个位置查看所有评论。在我之前的问题获得帮助后,该程序似乎运行良好。
然而,随着更多人使用该程序,我们发现该代码只能导出最近的 20 条评论。过去 20 条之前写的任何评论都不会导出到 Google 表格。这个文件有超过 20 条评论,所以这个问题让我的项目陷入停滞。
我的程序的代码如下:
function onOpen() {
const ui = DocumentApp.getUi();
ui.createMenu('Custom Functions')
.addItem('Export Comments to Google Sheets', 'listComments')
.addToUi();
}
function listComments() {
// Initialize Variables
var docId = '1h-BJrklSFgfGNCzdAWziNx5b5EDRjHHJ3DTkXHNhtUE';
var comments = Drive.Comments.list(docId);
var sList = [], hList = [], cList = [], nList = [], dList = [];
// Get list of comments
if (comments.items && comments.items.length > 0) {
for (var i = 0; i < comments.items.length; i++) {
var comment = comments.items[i];
// add comment and highlight to array's first element
sList.unshift([comment.status]);
hList.unshift([comment.context.value]);
cList.unshift([comment.content]);
nList.unshift([comment.author ? comment.author.displayName : '']);
dList.unshift([comment.createdDate ? new Date(comment.createdDate).toLocaleString() : '']);
}
// Update spreadsheet values
var sheet = SpreadsheetApp.openById('1XNJdSRMB1KR9_gpzbd6_rIC6WYpPoExuWkb12Nd1tRI').getSheetByName('Comments');
sheet.getRange("A2:A" + (sList.length + 1)).setValues(sList);
sheet.getRange("B2:B" + (hList.length + 1)).setValues(hList);
sheet.getRange("C2:C" + (cList.length + 1)).setValues(cList);
sheet.getRange("D2:D" + (nList.length + 1)).setValues(nList);
sheet.getRange("E2:E" + (dList.length + 1)).setValues(dList);
}
}
该程序的大部分内容是从旧帖子中复制并更新的,以满足我对该项目的需求:将 Google Docs 注释以及突出显示的文本导出到 Google Sheets 中?
注意:此程序要求您添加“Drive API (V2)”服务才能访问您的 Google Drive 文件。
我已经进行了一些故障排除以尝试找到问题,但我还没有找到导致仅提取最后 20 条评论的原因。我尝试删除评论并将其添加回来,但这没有任何效果。谁留下评论,或者谁运行程序似乎并不重要。
我在编码方面不是很熟练,但我在我的代码中找不到任何会导致仅导出 20 条评论的内容。我担心这个问题与 Google Docs 本身及其管理评论的方式有关。
我唯一能想到的就是将 Drive API 从版本 V2 更改为 V3。不幸的是,我无法在 V3 版本上正确运行代码。从 Apps 脚本页面运行代码时,它似乎运行成功,但没有提取任何注释。从 Google 文档页面本身的自定义菜单按钮运行代码时,我收到以下错误消息: GoogleJsonResponseException: API call todrive.comments.list failed with error: The 'fields'parameter is required for this method.
任何有关其他故障排除方法的想法将不胜感激!