Ссылки - это "богатые" функции связанного элемента (обычно 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;
}