我正在开展一个协作项目,其中很多人将对单个 Google 文档发表评论。为了轻松查看所有评论,我想找到一种方法将所有评论导出到单个 Google Sheet 文件,该文件将显示评论、突出显示的文本、作者以及评论的时间。我以前从未使用过 Google Apps 脚本,因此我在堆栈溢出上找到了一些示例代码,它们正是我所需要的。
以下是供参考的原始帖子:将 Google 文档评论以及突出显示的文本导出到 Google 表格中?
我需要更新一些代码来满足我的需求,我只剩下这段代码:
function listComments() {
// Initialize Variables
var docId = '1dS9yHUrgsGv6KZhohMhITfgul3jo0MdnM8F6EHgMFnk';
var comments = Drive.Comments.list(docId);
var 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
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('1JWT0BxJ-MnAzIfP228t9ih3H3ZuswgTIeu98D_j4zPY').getSheetByName('Comments');
sheet.getRange("A1:A" + hList.length).setValues(hList);
sheet.getRange("B1:B" + cList.length).setValues(cList);
sheet.getRange("C1:C" + nList.length).setValues(nList);
sheet.getRange("D1:D" + dList.length).setValues(dList);
}
}
此代码按预期工作,但我对注释保存在工作表上的位置有疑问。此代码打印从第 1 行开始的注释。我需要它开始打印第 #2 行的注释,以便有空间向第 #1 行的列添加标题。有谁知道如何更新此代码以更改保存评论的起始行?
我想我可以通过将第 19 行的“A1:A”更新为“A2:A”来实现这一点。这给了我以下错误:异常:数据中的行数与范围中的行数不匹配。数据有 1,但范围有 2。
我还尝试将第 9 行的“var i = 0”更改为“var i = 1”。这给了我以下错误:异常:找不到范围
我的编码技能非常有限,所以我不确定还可以尝试什么。
非常感谢任何帮助!
您需要更新脚本以移动顶部和底部行号,以便范围的大小与值的数量匹配:
function listComments() {
// Initialize Variables
var docId = '1dS9yHUrgsGv6KZhohMhITfgul3jo0MdnM8F6EHgMFnk';
var comments = Drive.Comments.list(docId);
var 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
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('1JWT0BxJ-MnAzIfP228t9ih3H3ZuswgTIeu98D_j4zPY').getSheetByName('Comments');
// Change in these rows:
sheet.getRange("A2:A" + (hList.length + 1)).setValues(hList);
sheet.getRange("B2:B" + (cList.length + 1)).setValues(cList);
sheet.getRange("C2:C" + (nList.length + 1)).setValues(nList);
sheet.getRange("D2:D" + (dList.length + 1)).setValues(dList);
}
}
诚然,我没有跑过,因为我没有测试表,但它应该可以工作。