Запись пользовательских ссылок из массива в листы Google

#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")`;
}