有什么方法可以使用Google脚本在另一个Google文档的顶部添加模板文档?

时间:2019-06-16 17:46:20

标签: google-cloud-platform

我正在尝试将模板文档添加到现有的google文档中。正在添加模板,但是下次当我再次尝试添加模板时,模板将附加在现有的google文档的底部,但我想要将模板插入顶部。

您可以通过获取一个文档的正文并将其子元素附加到当前文档中来完成此操作。

function addtemplate() {

  var thisDoc = DocumentApp.getActiveDocument();
  var thisBody = thisDoc.getBody();

  var templateDoc = DocumentApp.openById(''); //Pass in id of doc to be used as a template.
  var templateBody = templateDoc.getBody();

  for(var i=0; i<templateBody.getNumChildren();i++){ //run through the elements of the template doc's Body.
    switch (templateBody.getChild(i).getType()) { //Deal with the various types of Elements we will encounter and append.
      case DocumentApp.ElementType.PARAGRAPH:
        thisBody.appendParagraph(templateBody.getChild(i).copy());
        break;
      case DocumentApp.ElementType.LIST_ITEM:
        thisBody.appendListItem(templateBody.getChild(i).copy());
        break;
      case DocumentApp.ElementType.TABLE:
        thisBody.appendTable(templateBody.getChild(i).copy());
        break;
    }
  }

  return thisDoc;
}

1 个答案:

答案 0 :(得分:0)

听起来您的目标是选择要添加内容的文档的位置?

一种选择是将模板添加到您当前的光标位置。

在下面的示例中,我有两个功能。打开文档时,第一个功能会在Google文档中创建一个菜单(通常会延迟几秒钟)。

第二个功能试图识别光标的位置。如果成功,它将在我的光标位置插入日期。

自从创建菜单项以来,无需转到脚本编辑器即可触发此功能。

function onOpen() {
  // Add a menu item in Google Docs.
  DocumentApp.getUi().createMenu('Insert Menu')
      .addItem('Insert Current Date', 'insertCurrentDate')
      .addToUi();
}

function insertCurrentDate() {
  var cursor = DocumentApp.getActiveDocument().getCursor();

  if (cursor) {
    // Attempt to insert text at the cursor position. If insertion returns null,
    // then the cursor's containing element doesn't allow text insertions.
    var date = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd");
    var element = cursor.insertText(date);
    if (element) {
      element.setBold(true);
    } else {
      DocumentApp.getUi().alert('Document does not allow inserted text at this location.');
    }
  } else {
    DocumentApp.getUi().alert('Cannot find a cursor in the document.');
  }
}

是否有可能要在粘贴新模板之前清除以前的模板?您可以使用clear()函数执行此操作,然后运行其余代码。

body.clear()