【问题标题】:Pass Comments & Suggested Edits from a Google Document to a Google Sheet将评论和建议的编辑从 Google 文档传递到 Google 表格
【发布时间】:2015-08-03 14:34:30
【问题描述】:

堆垛机伙伴。我正在使用 Google Apps 脚本 (a) 捕获 Google 文档中的所有“评论”... ...并且 (b) 在 Google 表格的列中列出它们...

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

(1) 将“评论”排列到工作表中的一列下方的单个单元格中,而不是像现在这样排列到单个列中。这是我目前用来获取评论内容的一点 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 文档中的锚点位置对“评论”进行排序——即在文档中锚定在最高位置的评论将出现在工作表列的第一个单元格中。

(3) 在 cmets 旁边还包括我的 Google 文档中的“建议的编辑”。可以通过 API 访问吗?

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

【问题讨论】:

  • 请同时包含您在每种情况下尝试的内容,因为目前没有这样的代码,所以我们可以告诉您为什么它不起作用。
  • 抱歉我的粗鲁做法。我更新了我的问题,包括屏幕截图和问题 1 的一些有问题的代码。对于问题 2-3,我很遗憾不知道从哪里开始,所以我没有要添加的“相关”代码。事后看来,我意识到这个论坛不是讨论这类哲学问题的地方,所以我不会再问这样的问题了。
  • 很好的编辑,格雷格。现在这是一个很好的问题,并且将来可能会帮助其他人。不要害怕问哲学问题,尤其是当它与实际部分如此密切相关时 - 再次,它可以帮助其他可能想知道同样事情的人。最糟糕的情况是“社区”会推动您对其进行修改或将其带到另一个论坛。

标签: google-apps-script google-sheets google-drive-api


【解决方案1】:

(1) 将“评论”排列到工作表中一列下方的单个单元格中,而不是像现在这样排列到单个列中。

这段代码获取一个 cmets 数组,并将它们连接成一个字符串:

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

为了能够将每条评论放入列中的单独单元格中,您需要将该数组更改为二维数组,其中每个原始元素都位于其自己的“行”中。比如:

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

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

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) 按我的 Google 文档中的锚点位置对“评论”进行排序——即在文档中锚定在最高位置的评论将出现在工作表列的第一个单元格中。

你运气不好(至少现在是这样)。见:

总结:Google 的锚点无法破译。 (可能它们是隐藏数据库的关键,其中包括文档的实际行和字符引用,以及您的社会保险号和母亲的娘家姓。)您可以检索它们并按字母顺序对它们进行排序......但这不会与 cmets 在文档中出现的位置有关。

(3) 在 cmets 旁边还包括我的 Google 文档中的“建议的编辑”。可以通过 API 访问吗?

没有。

【讨论】:

  • 非常感谢您抽出宝贵时间提供您的见解,Mogsdad。您的回复既详尽又有益。再次为我最初问题的结构道歉;你的耐心并没有被忽视。一切顺利。
  • 谢谢!很高兴为您提供帮助 - 有趣的问题。
猜你喜欢
  • 2021-05-12
  • 1970-01-01
  • 2019-10-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多