Как автоматически дублировать гиперссылки, чтобы они ссылались на ту же дублированную страницу, а не на оригинал в Google Sheets? - PullRequest
2 голосов
/ 23 мая 2019

У меня длинная таблица с разделами на листе Google Sheets.Первые четыре строки заморожены и имеют гиперссылки на все разделы в таблице, поэтому я могу быстро получить доступ к этим разделам.Мне нужно создавать новый дубликат листа каждую неделю, но гиперссылки в дубликатах все еще ссылаются на исходную страницу, если я не изменю их вручную.Как сделать так, чтобы при дублировании листа шаблона гиперссылки автоматически связывались с разделами таблицы на дублированном листе, а не с оригиналом?

Сделан быстрый пример листа.Дублированный TEMP и все гиперссылки там все еще ссылаются на страницу TEMP.https://docs.google.com/spreadsheets/d/1jIdWY583ZQwau10NAskK4u7RjaPNKJxCTk5DYippV8Y/edit?usp=sharing

1 Ответ

1 голос
/ 24 мая 2019

вместо этой формулы:

=HYPERLINK("#gid=932114522&range=B33:U33","EXAMPLE 5")

вам нужно будет сделать:

=HYPERLINK("#gid="&VLOOKUP(SHEETNAME(), SHEETLIST(), 2, 0)&"range=B33:U33", "EXAMPLE 5")

после добавления этих двух сценариев на лист:

function SHEETLIST() {
try {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
  var out = new Array( sheets.length+1 ) ;
  out[0] = [ "NAME" , "#GID" ];
  for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] = 
  [sheets[i-1].getName() , sheets[i-1].getSheetId() ];
  return out
}
catch( err ) {
  return "#ERROR!" 
}
}

function SHEETNAME() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}
...