如何使用Google脚本在Google文档中创建超链接数组(或一个长字符串)

时间:2019-02-14 11:14:06

标签: google-apps-script hyperlink google-docs

或原始格式的google文档超链接。

我试图做下一件事:

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 ...”显示为常规字符串-而非链接。

我想要得到这样的东西: 123 ......并将其粘贴到google docs文档中。

1 个答案:

答案 0 :(得分:0)

链接是关联元素的“丰富”功能(通常为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;
}