使用 Apps 脚本将 Google 个文档中的一个部分复制到另一个文档
Copying a section from Google Docs to another Doc using Apps Script
我已成功使用此代码将一个文档的全部内容复制到另一个文档中:
const newestFile = DocumentApp.openById("ID").getBody();
const archive = DocumentApp.openById("ID").getBody();
let index = 12;
let el, type;
for (let i = 0; i < newestFile.getNumChildren(); i++){
el = newestFile.getChild(i);
type = el.getType();
switch (type){
case DocumentApp.ElementType.PARAGRAPH:
archive.insertParagraph(index,el.copy());
index++;
break;
case DocumentApp.ElementType.LIST_ITEM:
archive.insertListItem(index,el.copy());
index++;
break;
case DocumentApp.ElementType.TABLE:
archive.insertTable(index,el.copy());
index++;
break;
}
}
但是,我现在需要将一个文档的部分复制到另一个文档中,我无法弄清楚。如果我知道如何获取任何元素的 body 索引,我可以用同样的方法来做,但我不知道这是否可行。我需要复制的文本将始终以特定文本(“当前周”)开头,并在特定文本(“ARCHIVE”)之前立即结束。
描述
这里是一个简单的例子,说明如何在某些文本之间进行复制。我只介绍了段落和表格,但可以处理任何其他类型的元素。
测试文档
脚本
function myFunction() {
try {
let doc = DocumentApp.getActiveDocument();
let body = doc.getBody();
let count = body.getNumChildren();
doc = DocumentApp.create("dummy");
let copy = doc.getBody();
let start = false;
for( let i=0; i<count; i++ ) {
let child = body.getChild(i);
if( child.getType() == DocumentApp.ElementType.PARAGRAPH ) {
if( child.asParagraph().findText("Current Week") ) start = true;
if( start ) copy.appendParagraph(child.asParagraph().copy());
if( child.asParagraph().findText("ARCHIVE") ) break;
}
else if( child.getType() == DocumentApp.ElementType.TABLE ) {
if( start ) copy.appendTable(child.asTable().copy());
}
}
}
catch(err) {
console.log("Error in myFunction - "+err)
}
}
参考
我已成功使用此代码将一个文档的全部内容复制到另一个文档中:
const newestFile = DocumentApp.openById("ID").getBody();
const archive = DocumentApp.openById("ID").getBody();
let index = 12;
let el, type;
for (let i = 0; i < newestFile.getNumChildren(); i++){
el = newestFile.getChild(i);
type = el.getType();
switch (type){
case DocumentApp.ElementType.PARAGRAPH:
archive.insertParagraph(index,el.copy());
index++;
break;
case DocumentApp.ElementType.LIST_ITEM:
archive.insertListItem(index,el.copy());
index++;
break;
case DocumentApp.ElementType.TABLE:
archive.insertTable(index,el.copy());
index++;
break;
}
}
但是,我现在需要将一个文档的部分复制到另一个文档中,我无法弄清楚。如果我知道如何获取任何元素的 body 索引,我可以用同样的方法来做,但我不知道这是否可行。我需要复制的文本将始终以特定文本(“当前周”)开头,并在特定文本(“ARCHIVE”)之前立即结束。
描述
这里是一个简单的例子,说明如何在某些文本之间进行复制。我只介绍了段落和表格,但可以处理任何其他类型的元素。
测试文档
脚本
function myFunction() {
try {
let doc = DocumentApp.getActiveDocument();
let body = doc.getBody();
let count = body.getNumChildren();
doc = DocumentApp.create("dummy");
let copy = doc.getBody();
let start = false;
for( let i=0; i<count; i++ ) {
let child = body.getChild(i);
if( child.getType() == DocumentApp.ElementType.PARAGRAPH ) {
if( child.asParagraph().findText("Current Week") ) start = true;
if( start ) copy.appendParagraph(child.asParagraph().copy());
if( child.asParagraph().findText("ARCHIVE") ) break;
}
else if( child.getType() == DocumentApp.ElementType.TABLE ) {
if( start ) copy.appendTable(child.asTable().copy());
}
}
}
catch(err) {
console.log("Error in myFunction - "+err)
}
}
参考