使用 Google App Script 按 ID 获取 Google Doc 元素



问题: 我试图避免循环浏览文档,直到找到标签然后抓住父项。有谁知道是否有办法通过 id 或句柄找到谷歌文档元素?

上下文: 我有一个脚本可以打开定义的模板文档;逐个元素将其复制到新文档中,然后使用 replaceText 函数将任何 MUSTACHE 标签替换为传入对象的值。这部分工作正常,但有一个部分我想根据对象值作为数组重复表行。不幸的是,除了以下内容之外,我似乎无法弄清楚如何在模板文档中找到该表:

if('{{ some tag }}' in aElement){
var repeatableElement = aElement.getParent();
if(repeatableElement){
goRunRepeatFunction();
}
}

似乎应该有一种方法可以通过id直接跳转到元素。

可以使用以下代码片段完成任务:

function getElement() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var numOfElements = body.getNumChildren();
var element = body.getChild(INDEX_OF_THE_CHILD).asText();
console.log(element.getText());
}

这将收集文档的body并检索其具有的子项数。此数字表示文档具有的元素。因此,为了访问某个元素,您只需要使用getChild(index)方法

注意

请记住,getNumChildren()方法最终将返回文档中所有元素的数量,包括空行 - 这些也将被视为元素。

通常,在 Apps 脚本中处理文档时,会按元素的类型检索元素以保留它们。因此,例如,如果您的文档中有images,最好使用getImages()检索这些图像,这最终将返回包含文档中所有图像的列表,每个图像都可以通过其索引访问。

另一种方法是使用getParagraphs()方法检索正文中的所有段落,但如果知道文档的确切结构,则可以按元素的类型检索所有元素,然后按类型访问它们。

参考

  • Class ContainerElement - getNumChildren((;

  • 类容器元素 - getChild(整数(;

  • 类主体 - getParagraphs((。

最新更新