Это немного сложно, поскольку перебор отдельных элементов внутри документа Google несколько сбивает с толку.В отличие от электронных таблиц, структура документа не так жестко определена, но вы все равно можете получить относительные координаты для некоторых элементов.
Следующий код работал для меня.Как правило, может быть хорошей идеей заключить шаблоны в фигурные скобки, чтобы визуально выделить их в документе.
function addUrl(){
//Placeholder patterns
var pattern = "{{mailTo}}";
var replacement = "mailto: antond@example.com";
//Open the bound doc
var doc = DocumentApp.getActiveDocument();
//Get body
var body = doc.getBody();
//find rangeElement
var rangeElement = body.findText(pattern);
//if the element is partial, check how far it is from the start of the range
var startOffset = rangeElement.getStartOffset();
//... and from the end.
var endOffset = rangeElement.getEndOffsetInclusive();
//Get the full Element from the partial RangeElement and cast it to Text
var text = rangeElement.getElement().asText();
//If element is partial, pick only the part that matches the pattern.
//Add the URL first to avoid the link not being added to the entire pattern later.
if (rangeElement.isPartial()) {
text.setLinkUrl(startOffset, endOffset, replacement);
} else {
text.setLinkUrl(replacement);
}
text.replaceText(pattern, "Anton Dementiev");
}
Результат: