Advertisement
Namokonov

richurls

Mar 18th, 2021
438
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Таблица с кодом, в которой все работает
  2. //https://docs.google.com/spreadsheets/d/1IENUS6lIb9uALOGgRS8tUN4Ok80WL_oMsc3Z4XcT3lo/edit?usp=sharing
  3.  
  4. function fromUrl() {
  5. //определяем активный диапазон, активный лист и забираем значения
  6.  const range = SpreadsheetApp.getActiveRange();
  7.  const sheet = SpreadsheetApp.getActiveSheet();
  8.  const richText = range.getRichTextValues();
  9.  
  10. //наполняем в цикле массив: текст, ссылка, формула
  11.  const values = richText.map(g => [g[0].getText(), g[0].getLinkUrl(), `=HYPERLINK("${g[0].getText()}";"${g[0].getLinkUrl()}")`]);
  12.  
  13. //вставляем, ориентируясь на границы выделенного диапазона
  14.  sheet.getRange(range.getRow(), range.getColumn() + 1, values.length, values[0].length)
  15.  .setValues(values)
  16. }
  17.  
  18. И обратное превращение: выделяем диапазон [текст, ссылка] → получаем вшитые в текст ссылки
  19.  
  20. function toUrl() {
  21. //определяем активный диапазон, активный лист и забираем значения, создаём пустой массив
  22.  const range = SpreadsheetApp.getActiveRange();
  23.  const sheet = SpreadsheetApp.getActiveSheet();
  24.  const values = range.getValues();
  25.  let richText = [];
  26.  
  27. //наполняем массив в цикле, добавляя вшитые ссылки (RichTextValueBuilder)
  28.  values.forEach(g => {
  29.  richText.push([SpreadsheetApp
  30.  .newRichTextValue()
  31.       .setText(g[0])
  32.       .setLinkUrl(g[1])
  33.       .build()]);
  34.   });
  35.  
  36. //вставляем
  37.   sheet.getRange(range.getRow(), range.getColumn() + 3, values.length, 1)
  38.   .setRichTextValues(richText)
  39. }
  40.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement