Заменить текст документа на текст и ссылку - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь заменить некоторый текст в Документе Google альтернативным текстом и соответствующей ссылкой.(Ссылка на ячейку в Google SS.)

Я работаю над ответом на Скрипт Служб Google. Сделайте текст активируемым URL-адресом, используя replaceText ()

Сценарий выполняется, но в последней строке появляется следующая ошибка:

"Ошибка выполнения: индекс (114) должен быть меньше длины содержимого (8). (Строка 116, файл" Код ")"

«114» относится к длине URL.«8» относится к длине заменяющего текста, который является BTW, «Новая песня».

Кажется, что этот подход имеет фатальный недостаток в том, что длина ссылки (URL) не может превышатьдлина заменяемого текста.(Я не могу представить, что это действительно так, но я не вижу пути решения проблемы.) Я искал альтернативные подходы к коду, который я использовал, но не нашел ни одного.

Примечание. Любые переменные ниже, которые не определены в этом сценарии, определены в сценарии, предшествующем этому разделу (который я опущен для краткости).Все эти переменные работают правильно.Ошибка всегда возникает в последней строке приведенного ниже сценария.

var titleUrl = titleLink;
var targetString = "Song Title"
var replacementString = songTitle
var element = body.findText(targetString);
var start = element.getStartOffset();
var text = element.getElement().asText();
text.replaceText(targetString, replacementString  );
text.setLinkUrl(start, start+titleUrl.length, titleUrl);

Я ожидаю, что старый текст, «Название песни» будет заменен на «Новая песня», а «Новая песня» будеткликабельная ссылка на ячейку в Google Sheet.

Обновление

Чтобы замкнуть цикл на этом;окончательный код:

var titleUrl = titleLink;
var targetString = "Song Title"
var replacementString = songTitle
var element = body.findText(targetString);
var text = element.getElement().asText();
text.replaceText(targetString, replacementString  );
text.setLinkUrl(titleUrl);

1 Ответ

0 голосов
/ 05 июня 2019

Я думаю, вы пытаетесь вызвать setLinkUrl() с неверным параметром start+titleUrl.length. Второй параметр в этом методе относится к длине text , а не к длине link . То, что вы делаете сейчас, пытается установить ссылку на текст, который 114 - text.getText (). Длина длиннее вашего фактического текста "Новая песня".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...