как заменить переменную на mailto: ссылка в скрипте Google Doc Apps - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь заменить переменную текстом и ссылкой mailto:

copyBody.replaceText('varEmail', email).setLinkUrl('mailto:'+email);

Приведенный выше код заменяет varEmail соответствующим текстом 'email', но затем он делает каждый текстовый блокmailto: ссылка.Мне просто нужен текст 'email', чтобы быть ссылкой mailto:

1 Ответ

1 голос
/ 08 мая 2019

Это немного сложно, поскольку перебор отдельных элементов внутри документа 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");


    }

Результат: enter image description here

...