#google-apps-script #google-sheets
Вопрос:
У меня есть следующий массив в Google таблицах, я использую этот код для записи массива на лист:
let array = [["Dan", "www.dan.com", 65],["Sam", "www.sam.com",44],["Josh", "www.josh.com",10]];
let range = SpreadsheetApp.getActiveSpreadsheet().getRange(1,1,array.length,array.length[0]);
range.setValues(array);
Я хочу, чтобы для каждого из них можно было сделать гиперссылку с указанием URL-адреса, например «Сайт Джоша», который ведет к «www.josh.com»
Желаемый Результат:
|A |B |C
1|Dan | Dan Site | 65
2|Sam | Sam Site | 44
3|Josh | Josh Site | 10
Как лучше всего это сделать? если это возможно…
Комментарии:
1. Самое простое, что можно сделать, это использовать формулу гиперссылки
2. Дело в том, что при использовании формулы гиперссылки мне нужно указывать на каждый диапазон отдельно. Я хочу сделать это оптом
Ответ №1:
function hlink() {
let array = [["Dan", "www.dan.com", 65], ["Sam", "www.sam.com", 44], ["Josh", "www.josh.com", 10]].map(r => [r[0], `=HYPERLINK("${r[1]}","${r[1]}")`, r[2]]);
let range = SpreadsheetApp.getActiveSheet().getRange(1, 1, array.length, array[0].length).setValues(array);
}
Комментарии:
1. Спасибо, это решило проблему. Я подумал, что мне нужно использовать setFormula, чтобы установить его. По-видимому, нет.
Ответ №2:
let array = [["Dan", "www.dan.com", 65],["Sam", "www.sam.com",44],["Josh", "www.josh.com",10]];
for (const row of array) {
row[1] = `=HYPERLINK("${row[1]})","${row[0]} Site")`;
}