如何根据 GAS 和 Google DOC API 的建议更改文本
How to change the text based on suggestions through GAS and Google DOC API
如题,昨天学习了如何在, and I refer to 中获取API文档的All-suggestion-accepted内容,知道了如何获取建议的插入和删除。另外,通过上面的方法,我可以检索到插入和删除的起始索引(插入或删除在文档中开始的位置)和结束索引(插入或删除在文档中结束的位置)。
那么,我是否可以对以索引为位置的所有建议接受的内容进行修改,例如在插入或删除部分下划线?这样做会不会出错?
这是Google文档API返回给我的数组,格式为
[suggestedDeletionIds,"delete",content,startIndex,endIndex]
这是我对文档做的插入和删除,我想根据索引在文档的全部建议接受内容中强调删除和插入部分。
下面是代码片段和代码片段的结果,最后两位数字是插入或删除的开始和结束索引。
function get_all_insertion_deletion() {
var documentId = "MYDOCUMENTID";
var doc = Docs.Documents.get(documentId);
remove_all(documentId);
doc.body.content.forEach(function (content){
if (content.paragraph) {
var elements = content.paragraph.elements;
elements.forEach(function (element){
if(element.textRun.suggestedDeletionIds)
{
var d_length= element.endIndex-element.startIndex;
var d= [element.textRun.suggestedDeletionIds,"delete",element.textRun.content,element.startIndex,element.endIndex];
Logger.log(d);
deletion++;
}
if(element.textRun.suggestedInsertionIds)
{
var i_length= element.endIndex-element.startIndex;
var i= [element.textRun.suggestedInsertionIds,"insert",element.textRun.content,element.startIndex,element.endIndex];
Logger.log(i);
insertion++; } }); }
});
}
我相信你的目标如下。
- 您想在 Google 文档中为脚本的“删除”和“插入”部分添加下划线。
为了达到你的目的,当你的脚本修改后变成如下。
修改后的脚本:
function get_all_insertion_deletion() {
var documentId = "MYDOCUMENTID";
var doc = Docs.Documents.get(documentId);
var requests = [];
doc.body.content.forEach(function (content) {
if (content.paragraph) {
var elements = content.paragraph.elements;
elements.forEach(function (element) {
if (element.textRun.suggestedDeletionIds) {
// var d_length = element.endIndex - element.startIndex; // This is not used.
var d = [element.textRun.suggestedDeletionIds, "delete", element.textRun.content, element.startIndex, element.endIndex];
Logger.log(d);
requests.push({ updateTextStyle: { range: { startIndex: element.startIndex, endIndex: element.endIndex }, textStyle: { underline: true }, fields: "underline" } });
// deletion++; // This is not used.
}
if (element.textRun.suggestedInsertionIds) {
// var i_length = element.endIndex - element.startIndex; // This is not used.
var i = [element.textRun.suggestedInsertionIds, "insert", element.textRun.content, element.startIndex, element.endIndex];
requests.push({ updateTextStyle: { range: { startIndex: element.startIndex, endIndex: element.endIndex }, textStyle: { underline: true }, fields: "underline" } });
Logger.log(i);
// insertion++; // This is not used.
}
});
}
});
Docs.Documents.batchUpdate({requests}, documentId);
}
或者,我认为你也可以修改以下脚本。
function get_all_insertion_deletion() {
var documentId = "MYDOCUMENTID";
var doc = Docs.Documents.get(documentId);
var requests = doc.body.content.flatMap(content => {
if (content.paragraph) {
var elements = content.paragraph.elements;
return elements.flatMap(element => element.textRun.suggestedDeletionIds || element.textRun.suggestedInsertionIds ? { updateTextStyle: { range: { startIndex: element.startIndex, endIndex: element.endIndex }, textStyle: { underline: true }, fields: "underline" } } : []);
}
return [];
});
Docs.Documents.batchUpdate({requests}, documentId);
}
参考:
如题,昨天学习了如何在
那么,我是否可以对以索引为位置的所有建议接受的内容进行修改,例如在插入或删除部分下划线?这样做会不会出错?
这是Google文档API返回给我的数组,格式为
[suggestedDeletionIds,"delete",content,startIndex,endIndex]
这是我对文档做的插入和删除,我想根据索引在文档的全部建议接受内容中强调删除和插入部分。
下面是代码片段和代码片段的结果,最后两位数字是插入或删除的开始和结束索引。
function get_all_insertion_deletion() {
var documentId = "MYDOCUMENTID";
var doc = Docs.Documents.get(documentId);
remove_all(documentId);
doc.body.content.forEach(function (content){
if (content.paragraph) {
var elements = content.paragraph.elements;
elements.forEach(function (element){
if(element.textRun.suggestedDeletionIds)
{
var d_length= element.endIndex-element.startIndex;
var d= [element.textRun.suggestedDeletionIds,"delete",element.textRun.content,element.startIndex,element.endIndex];
Logger.log(d);
deletion++;
}
if(element.textRun.suggestedInsertionIds)
{
var i_length= element.endIndex-element.startIndex;
var i= [element.textRun.suggestedInsertionIds,"insert",element.textRun.content,element.startIndex,element.endIndex];
Logger.log(i);
insertion++; } }); }
});
}
我相信你的目标如下。
- 您想在 Google 文档中为脚本的“删除”和“插入”部分添加下划线。
为了达到你的目的,当你的脚本修改后变成如下。
修改后的脚本:
function get_all_insertion_deletion() {
var documentId = "MYDOCUMENTID";
var doc = Docs.Documents.get(documentId);
var requests = [];
doc.body.content.forEach(function (content) {
if (content.paragraph) {
var elements = content.paragraph.elements;
elements.forEach(function (element) {
if (element.textRun.suggestedDeletionIds) {
// var d_length = element.endIndex - element.startIndex; // This is not used.
var d = [element.textRun.suggestedDeletionIds, "delete", element.textRun.content, element.startIndex, element.endIndex];
Logger.log(d);
requests.push({ updateTextStyle: { range: { startIndex: element.startIndex, endIndex: element.endIndex }, textStyle: { underline: true }, fields: "underline" } });
// deletion++; // This is not used.
}
if (element.textRun.suggestedInsertionIds) {
// var i_length = element.endIndex - element.startIndex; // This is not used.
var i = [element.textRun.suggestedInsertionIds, "insert", element.textRun.content, element.startIndex, element.endIndex];
requests.push({ updateTextStyle: { range: { startIndex: element.startIndex, endIndex: element.endIndex }, textStyle: { underline: true }, fields: "underline" } });
Logger.log(i);
// insertion++; // This is not used.
}
});
}
});
Docs.Documents.batchUpdate({requests}, documentId);
}
或者,我认为你也可以修改以下脚本。
function get_all_insertion_deletion() {
var documentId = "MYDOCUMENTID";
var doc = Docs.Documents.get(documentId);
var requests = doc.body.content.flatMap(content => {
if (content.paragraph) {
var elements = content.paragraph.elements;
return elements.flatMap(element => element.textRun.suggestedDeletionIds || element.textRun.suggestedInsertionIds ? { updateTextStyle: { range: { startIndex: element.startIndex, endIndex: element.endIndex }, textStyle: { underline: true }, fields: "underline" } } : []);
}
return [];
});
Docs.Documents.batchUpdate({requests}, documentId);
}