如何使用 google 应用程序脚本在 google 文档中的特定文本后附加 table?

How to append table after specific text in google docs using google apps script?

我想在特定文本后将 table 附加到 google 文档。这是我的尝试。

 var body = somedoc.getBody();   
    var range = body.findText("#PLACEHOLDER#");
    body.appendTable(data);

这里的数据是一些多维数组。这很好用。但是 table 被附加在正文的末尾。我想在“#PLACEHOLDER#”之后添加 table。

 var body = somedoc.getBody();   
    var range = body.findText("#PLACEHOLDER#");
    range.appendTable(data);

这行不通。如何获取范围的位置(文本:#PLACEHOLDER#)并在其后附加 table?

  • 您想在 Google 文档中 #PLACEHOLDER# 的文本后插入一个 table。
    • 从你的问题来看,我认为#PLACEHOLDER#放在一个段落中,而该段落只包含#PLACEHOLDER#的文字。
  • 您想使用 Google Apps 脚本实现此目的。

如果我的理解是正确的,这个示例脚本怎么样?

模式 1:

当Google文档中只有#PLACEHOLDER#一个文本时,下面的修改如何?

修改后的脚本:

var body = somedoc.getBody();
var range = body.findText("#PLACEHOLDER#");

// I added below script.
var ele = range.getElement();
if (ele.getParent().getParent().getType() === DocumentApp.ElementType.BODY_SECTION) {
  var offset = body.getChildIndex(ele.getParent());
  body.insertTable(offset + 1, data);
}

模式二:

当Google文档中有多个#PLACEHOLDER#的文本时,下面的修改如何?

修改后的脚本:

var body = somedoc.getBody();
var range = body.findText("#PLACEHOLDER#");

// I added below script.
while (range) {
  var ele = range.getElement();
  if (ele.getParent().getParent().getType() === DocumentApp.ElementType.BODY_SECTION) {
    var offset = body.getChildIndex(ele.getParent());
    body.insertTable(offset + 1, data);
  }
  range = body.findText("#PLACEHOLDER#", range);
}

注:

  • 这些修改后的脚本假定 datatable 或二维数组。

参考文献:

如果我误解了您的问题而这不是您想要的结果,我深表歉意。到时候能不能提供一个你要用的sample Document?至此,我想确认一下这个问题。