如何使用 Google Apps 脚本复制文档的一个或多个现有页面

2024-03-17

我已经成功编写了一个小脚本,它根据 Google 电子表格中的数据创建一封连续信件(给多个收件人的物理信件),为每个信件/地址创建一个新文档。 它确实有效,但对于大型邮件来说,这种方法有点麻烦,因为会创建大量文档并且需要单独打印。

现在我想做同样的事情,但结果是将所有字母都放在一个谷歌文档中。

有没有办法复制现有文档的内容并将其多次插入到相同或任何其他文档中(即通过应用程序脚本复制/粘贴)?


根据您的评论,这是我用来将不确定数量的文档合并到新文档中的完整代码。 所有文档 ID 都位于 ID 数组中,作为主函数的参数,结果是一个新文档,名称后附加了“多页”。如果您需要比代码注释中提供的更多解释,请告诉我...(请注意,它仅适用于包含文本和表格的文档,如果您有图像或其他数据类型,则必须在中处理这种情况我们按照相同逻辑检查 ElementType 的主循环)


EDIT :第一个代码被删除,在您更新之后,我尝试了这种方法,假设您的主文档中只有段落...尝试一下,我想您可以从那里开始开发您的项目。

function Serialletter_Singledocument() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Datenbank");
  var LastColumn = sheet.getLastColumn();

  //here you need to get document id from url (Example, 1oWyVMa-8fzQ4leCrn2kIk70GT5O9pqsXsT88ZjYE_z8)
  var FileTemplateFileId = "1Wrf2qvUTyc5tMmJIly40Z4U4sJb4-QhT5z-UfJmtQ-M" //Browser.inputBox("ID der Serienbriefvorlage (aus Dokumentenlink kopieren):");
  var doc = DocumentApp.openById(FileTemplateFileId);
  var DocName = doc.getName();

  var headpara=' ***** ';

  // Fetch entire table containing data
  var data = sheet.getDataRange().getValues();

  //Create copy of the template document and open it
  var SerialLetterID = DocsList.getFileById(FileTemplateFileId).makeCopy(DocName +" Serienbrief").getId();
  var docCopy = DocumentApp.openById(SerialLetterID);
  var totalParagraphs = docCopy.getBody().getParagraphs() ;// get the total number of paragraphs elements
  Logger.log(totalParagraphs);
  var elements = [];
  for ( var i = 1; i < data.length; i++) { //do for every record in the spreadsheet (containing the content to replace the variables in the letter)
    for (var e=0;e<totalParagraphs.length;e++){

      var element = totalParagraphs[e].copy();
//      Logger.log(element.editAsText().getText())
      for(var c=0;c<data[0].length;c++){     
        element.replaceText("<" +data[0][c] +">", data[i][c]); //replace variable (from column title) with actual value
      }
      elements.push(element);// store paragraphs in an array
    }

    for(var el=0;el<elements.length;el++){ 
      var paragraph = elements[el].copy();
      docCopy.getBody().appendParagraph(paragraph);
    }
  docCopy.getBody().appendPageBreak()
  }
  docCopy.saveAndClose();

  Browser.msgBox("Serienbrief ist erstellt. Sie finden die erstellten Dokumente in Google Drive unter Meine Ablage");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Google Apps 脚本复制文档的一个或多个现有页面 的相关文章

随机推荐