Получите Google Do c элемент по идентификатору с помощью скрипта приложения Google - PullRequest
0 голосов
/ 27 мая 2020

Вопрос: Я пытаюсь избежать цикла по документу, пока не найду тег, а затем не перейду к родительскому. Кто-нибудь знает, есть ли способ найти элемент google do c по идентификатору или дескриптору?

Контекст: у меня есть сценарий, который открывает документ определенного шаблона; копирует его в новый документ элемент за элементом, а затем заменяет все теги усов значениями из переданного объекта с помощью функции replaceText. Эта часть работает нормально, но есть один раздел, в котором я хотел бы повторить строку таблицы на основе значения объекта, являющегося массивом. К сожалению, я не могу понять, как найти таблицу в шаблоне do c, кроме чего-то вроде:

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

Похоже, что должен быть способ перейти непосредственно к элементу по идентификатору .

1 Ответ

0 голосов
/ 28 мая 2020

Ваша задача может быть выполнена с помощью этого фрагмента:

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)

Note

Пожалуйста, имейте в виду, что метод getNumChildren() в конечном итоге вернет количество всех элементов в документе, включая пустые строки - они также будут считаться элементами.

Обычно при работе с документом в Apps Script элементы извлекаются по их типы, чтобы сохранить их. Так, например, если у вас есть images в вашем документе, было бы лучше получить их, используя getImages(), и это приведет к возврату списка, содержащего все изображения в документе, причем каждое изображение будет доступно по их индексу.

Другой метод - получить все абзацы в теле с помощью метода getParagraphs(), но , если вы знаете точную структуру вашего документа , вы можете получить все элементы с помощью их тип, а затем получить к ним доступ как таковые.

Ссылка

...