使用谷歌应用脚​​本在谷歌文档中插入段落,listitem

时间:2016-10-11 08:55:46

标签: google-apps-script google-docs

我有一个带有占位符的Google文档,需要使用Apps脚本填充实际数据。例如Google文档内容:

  

这是模板文字。将此 {TOKEN1} 和此 {TOKEN2} 替换为   此 {TOKEN3} 以及使用Google Apps脚本。

要求是替换令牌并多次重复此段落。每次更换段落时,都需要在段落中放置一组不同的值。格式不应该被打破,在这种情况下,标记以粗体显示,因此值也应该以粗体显示如下:

  

这是模板文字。将此 FOO1 和此 BAR1 以及此 FUN1 替换为   很好地使用Google Apps脚本。

     

这是模板文字。使用Google Apps脚本替换此 FOO2 和此 BAR2 以及此 FUN2

     

这是模板文字。使用Google Apps脚本替换此 FOO3 和此 BAR3 以及此 FUN3

您能否让我知道应用脚本方法来实现此功能?

1 个答案:

答案 0 :(得分:0)

我能够达到以下要求:

  1. 遍历文档中的所有元素并处理段落:

    var elementCount = body.getNumChildren();
    for(var i = 0; i < elementCount; i++) {
      var child = body.getChild(i);
      if(child.getType() === DocumentApp.ElementType.PARAGRAPH) {
        replaceTokensInParagraph(element.asParagraph(), i);
      }  
    }
    
  2. 从段落文本

  3. 中收集所有令牌
  4. 从文档中删除段落,因为我们不需要最终文档中的模板化段落

  5. 制作模板化段落的分离副本

  6. 替换分离副本中的标记

  7. 总体而言,该功能如下所示:

    var replaceTokensInParagraph = function(paragraph, paragraphIndex) {
      paragraph.removeFromParent();
      var tokens = ....;
      for(int i=0; i<tokens.length; i++) {
         var paragraphCopy = paragraph.copy();
         paragraphCopy.replaceText(token, <value>);
         body.insertParagraph(paragraphIndex, paragraphCopy);
      }
    }