将评论和建议的编辑从 Google 文档传递到 Google Sheet

Pass Comments & Suggested Edits from a Google Document to a Google Sheet

各位堆垛机。我正在使用 Google Apps 脚本 (a) 在 Google 文档中捕获所有 "Comments"... ...和 ​​(b) 在 Google Sheet...

的列中列出它们

但是,我想知道是否有可能...

(1) 将 "Comments" 排列到我的 Sheet 列中的单个单元格中,而不是像我现在那样排列到单个列中。这是我目前用来抓取评论内容的一点GAS:

 var comments = JSON.parse(Drive.Comments.list(id));
 var items=comments.items;

 var string = "";
  for(var i in items){
    string+='\n';
    string+=items[i].content;
  }

(2) 在我的 Google 文档中按锚点位置排序 "Comments"——即文档中定位最高的评论将出现在 Sheet 列的第一个单元格中。

(3) 还包括我的 Google 文档中的 "Suggested Edits" 以及评论。可以通过 API 访问这些吗?

提前感谢任何可能提供帮助的人!

(1) Array "Comments" into individual cells down a column in my Sheet rather than into a single column, as I have now.

这段代码采用一组注释,并将它们连接成一个字符串:

  var string = "";
  for(var i in items){
    string+='\n';
    string+=items[i].content;
  }

为了能够将每个评论放入列中的单独单元格中,您需要将该数组更改为二维数组,每个原始元素都在其自己的 "row" 中。类似于:

  var data = [];           // start with an empty array
  for (var i=0; i<items.length; i++) {
    var item = items[i];   // current comment
    // A row is an array of cells
    var row = [item.htmlContent,item.author.displayName,item.createdDate];
    data.push(row);        // Add this row to the data array
  }

此行写入单个单元格的内容,尽管使用 setValues() 可以填充矩形范围:

var targetRange = sheet.getRange(lastRow+1,1,1,1).setValues([[string]]);

使用之前创建的二维数组,您可以像这样附加到 sheet:

var targetRange = sheet.getRange(lastRow+1,1,data.length,data[0].length);
targetRange.setValues(data);

结果:

function driveApiComment(id){

  var comments = JSON.parse(Drive.Comments.list(id));
  var items=comments.items;

  var data = [];           // start with an empty array
  for (var i=0; i<items.length; i++) {
    var item = items[i];   // current comment
    // A row is an array of cells
    var row = [item.htmlContent,item.author.displayName,item.createdDate];
    data.push(row);        // Add this row to the data array
  }

  var sheet = SpreadsheetApp.openById(submissionSSKey).getSheets()[0];
  var lastRow = sheet.getLastRow();
  var targetRange = sheet.getRange(lastRow+1,1,data.length,data[0].length);
  targetRange.setValues(data);

}

(2) Order the "Comments" by anchor position in my Google Document—i.e. the comment anchored highest in the doc would appear in the first cell of the Sheet's column.

你真倒霉(至少现在是这样)。参见:

  • How to match comments on an image using kix anchor (or not) in Google Docs
  • Anchor documentation does not exist?
  • Creating anchored comments programmatically in Google Docs

总结:Google 的锚点不可破译。 (它们很可能是一个隐藏数据库的关键,该数据库包括您文档的实际行和字符引用,以及您的社会安全号码和母亲的娘家姓。)您可以检索它们并按字母顺序对它们进行排序......但那不会与评论在文档中出现位置的关系。

(3) Also include "Suggested Edits" from my Google Document alongside the comments. Can those be accessed via API yet?

没有。