使用 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)
  }
}

参考