如何使用谷歌应用程序脚本在谷歌文档中的特定文本后附加表格?

Mat*_*s89 7 google-docs google-docs-api google-apps-script

我想在特定文本之后将表格附加到谷歌文档。这是我的尝试。

 var body = somedoc.getBody();   
    var range = body.findText("#PLACEHOLDER#");
    body.appendTable(data);
Run Code Online (Sandbox Code Playgroud)

这里的数据是一些多维数组。这工作正常。但是 table 被附加到 body 的末尾。我想在“#PLACEHOLDER#”之后附加表格。

 var body = somedoc.getBody();   
    var range = body.findText("#PLACEHOLDER#");
    range.appendTable(data);
Run Code Online (Sandbox Code Playgroud)

这不起作用。如何获取范围的位置(文本:#PLACEHOLDER#)并在其后附加表格?

Tan*_*ike 7

  • 您想#PLACEHOLDER#在 Google 文档中的文本后插入一个表格。
    • 从你的问题来看,我认为这#PLACEHOLDER#是放在一个段落中,并且该段落仅包含#PLACEHOLDER#.
  • 您想使用 Google Apps 脚本来实现这一点。

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

模式一:

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

修改后的脚本:

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);
}
Run Code Online (Sandbox Code Playgroud)

模式2:

#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);
}
Run Code Online (Sandbox Code Playgroud)

笔记:

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

参考:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。那个时候能不能提供一个你要使用的示例文档?通过这个,我想确认这个问题。