Как создать массив (или одну длинную строку) гиперссылок в документах Google с помощью сценария Google - PullRequest
0 голосов
/ 14 февраля 2019

Или как выглядит гиперссылка на Google Docs в необработанном формате.

Я попытался сделать следующее:

var links;
var nameArr = ["1", "2", "3", "4", "5", "6"];
var tempArr= ["11", "12", "13", "14", "15", "16"];
for (i = 0; i < nameArr.length; i++) {
  nameArr[i].setUrlLink("https://en.wikipedia.org/wiki/" + tempArr[i] + "/detection"
  links = links + ", "+ nameArr[i];
}

Я получаю сообщение об ошибке, так как не могу использовать setLinkUrlв строке, только в текстовом объекте - не удалось найти способ преобразования строки в текст.

Хотя, если я вставлю его «как есть», «http ...» отобразится как обычная строка -не ссылка.

Я хочу получить что-то вроде этого: 1 , 2 , 3 ...... и вставить егов документ Google Документы.

1 Ответ

0 голосов
/ 20 февраля 2019

Ссылки - это "богатые" функции связанного элемента (обычно Text).Таким образом, чтобы добавить ссылку на общий текст, сначала вы должны получить связанный элемент Text, а затем вызвать setLinkUrl.

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

Это простоФункция принимает Paragraph в качестве входных данных вместе с массивом отображаемого текста и URI и добавляет их в конец.

/**
 * Create links at the end of the given paragraph with the given text and the given urls.
 * @param {GoogleAppsScript.Document.Paragraph} pg The paragraph to hold the link array
 * @param {string[]} values The display text associated with the given links
 * @param {string[]} links The URI for the given link text
 * @param {string} [separator] text that should separate the given links. Default is comma + space, `", "`
 * @returns {GoogleAppsScript.Document.Paragraph} the input paragraph, for chaining
 */
function appendLinkArray(pg, values, links, separator) {
  if (!pg || !values || !links)
    return;
  if (!values.length || !links.length || values.length > links.length)
    throw new Error("Bad input arguments");
  if (separator === undefined)
    separator = ", ";

  // Add a space before the link array if there isn't one at the end of any existing text.
  if (pg.getText() && (!pg.getText().match(/ $/) || !pg.getText().match(/ $/).length))
    pg.appendText(" ").setLinkUrl("");
  // Add each link display text as a new `Text` object, and set its link url.
  links.forEach(function (url, i) {
    var text = values[i] || url;
    pg.appendText(text)
      .setLinkUrl(0, text.length - 1, url);
    if (separator && i < links.length - 1)
      pg.appendText(separator).setLinkUrl("");
  });
  return pg;
}
...