如何将 Google 文档评论导出到特定的 Google 表格单元格

问题描述 投票:0回答:1

我正在开展一个协作项目,其中很多人将对单个 Google 文档发表评论。为了轻松查看所有评论,我想找到一种方法将所有评论导出到单个 Google Sheet 文件,该文件将显示评论、突出显示的文本、作者以及评论的时间。我以前从未使用过 Google Apps 脚本,因此我在堆栈溢出上找到了一些示例代码,它们正是我所需要的。

以下是供参考的原始帖子:将 Google 文档评论以及突出显示的文本导出到 Google 表格中?

我需要更新一些代码来满足我的需求,我只剩下这段代码:

Comment Extraction Code

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”。这给了我以下错误:异常:找不到范围

我的编码技能非常有限,所以我不确定还可以尝试什么。

非常感谢任何帮助!

google-sheets google-sheets-api google-docs google-docs-api
1个回答
0
投票

您需要更新脚本以移动顶部和底部行号,以便范围的大小与值的数量匹配:

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);
  }
}

诚然,我没有跑过,因为我没有测试表,但它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.