使用 Google 应用程序脚本按 ID 获取 Google 文档元素
Get A Google Doc Element By ID with Google App Script
问题:
我试图避免循环遍历文档,直到找到标签然后抓住父标签。有谁知道是否有办法通过 ID 或句柄找到 google 文档元素?
上下文:
我有一个脚本可以打开定义的模板文档;将其逐个元素复制到新文档中,然后使用 replaceText 函数将任何小胡子标签替换为传入对象中的值。这部分工作正常,但有一个部分我想根据对象值是一个数组重复 table 行。不幸的是,我似乎无法弄清楚如何在模板文档中找到 table 除了类似的东西:
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()
方法检索正文中的所有段落,但是 如果您知道文档的确切结构,您可以按类型检索所有元素,然后按类型访问它们。
参考
问题: 我试图避免循环遍历文档,直到找到标签然后抓住父标签。有谁知道是否有办法通过 ID 或句柄找到 google 文档元素?
上下文: 我有一个脚本可以打开定义的模板文档;将其逐个元素复制到新文档中,然后使用 replaceText 函数将任何小胡子标签替换为传入对象中的值。这部分工作正常,但有一个部分我想根据对象值是一个数组重复 table 行。不幸的是,我似乎无法弄清楚如何在模板文档中找到 table 除了类似的东西:
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()
方法检索正文中的所有段落,但是 如果您知道文档的确切结构,您可以按类型检索所有元素,然后按类型访问它们。