将评论和建议的编辑从 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 访问这些吗?
提前感谢任何可能提供帮助的人!
- Google 文档:https://docs.google.com/document/d/1O7zAdkCmxhYihtfJhZ3OGkWfO8UUJ_deoHEYr7rQHW4/edit?usp=sharing
- Google 应用脚本:https://script.google.com/macros/d/1MgTtU0cKSS_XghRjAMtjZFQAdsbU9SkD_2zx03KVKb1Vy4iBBp3MI2QW/edit?uiv=2&mid=ACjPJvHY-vp53Ek1wBR4-W3Q1Ur8dSdyN0g6ZI7n3I48-e7EWyq6v9gY82OAeVNlnpQBbY3ICOzi4PCRtp-pjuqAbH3oePLelcIp-YUPs2FNbB7Cl7CC-AvgnoJPcXCnrO8CrIJEI2v8ns8&splash=yes
- Google Sheet: https://docs.google.com/spreadsheets/d/1uAtmAO0we7h3HUAFlDBLXlShSLvHVM_W6OSXPwpX_t8/edit?usp=sharing
(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?
没有。
各位堆垛机。我正在使用 Google Apps 脚本 (a) 在 Google 文档中捕获所有 "Comments"...
但是,我想知道是否有可能...
(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 访问这些吗?
提前感谢任何可能提供帮助的人!
- Google 文档:https://docs.google.com/document/d/1O7zAdkCmxhYihtfJhZ3OGkWfO8UUJ_deoHEYr7rQHW4/edit?usp=sharing
- Google 应用脚本:https://script.google.com/macros/d/1MgTtU0cKSS_XghRjAMtjZFQAdsbU9SkD_2zx03KVKb1Vy4iBBp3MI2QW/edit?uiv=2&mid=ACjPJvHY-vp53Ek1wBR4-W3Q1Ur8dSdyN0g6ZI7n3I48-e7EWyq6v9gY82OAeVNlnpQBbY3ICOzi4PCRtp-pjuqAbH3oePLelcIp-YUPs2FNbB7Cl7CC-AvgnoJPcXCnrO8CrIJEI2v8ns8&splash=yes
- Google Sheet: https://docs.google.com/spreadsheets/d/1uAtmAO0we7h3HUAFlDBLXlShSLvHVM_W6OSXPwpX_t8/edit?usp=sharing
(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?
没有。