Ответ 1
Это идеальный вариант использования для именованных диапазонов, и он не требует каких-либо изменений в вашей логике скриптов.
var range = ss.getRangeByName("NamedRange1");
Совсем недавно, Google добавил функцию, где вы можете гиперссылку на определенную ячейку, и это здорово. Для этого вы используете функцию "Вставить ссылку" в определенной ячейке, а затем в раскрывающемся меню вы можете нажать "Выбрать диапазон ячеек для ссылки", где вы затем выбираете ячейку или диапазон, в котором вы хотите ссылаться на. При этом Google генерирует очень удобный (и динамичный) десятизначный "идентификатор диапазона".
Это выглядит примерно так: =HYPERLINK("#rangeid=1234567890","link")
Однако я не могу понять, как создать это с помощью сценария.
Мне кажется странным, что эта функция не существует, так как это можно сделать вручную.
Я могу использовать следующий код для генерации идентификатора листа, что очень удобно при создании гиперссылок для перехода между страницами:
var ss = SpreadsheetApp.getActive();
var sheet1 = ss.getSheetByName(name);
var gid = sheet.getSheetId();
sheet2.getRange("A1").setFormula('=hyperlink("#gid='+gid+'","'name'")');
И я могу использовать следующий код для создания ссылки на определенную ячейку, но она не динамическая и разрывается после вставки строк/столбцов в лист:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRangeByName("A10");
var sheetID = range.getSheet().getSheetId();
var rangeCode = range.getA1Notation();
sheet2.getRange("J10").setFormula('=hyperlink("https://docs.google.com/spreadsheets/d/'+ss.getId()+'/edit#gid='+sheetID+'&range='+rangeCode+'","link")');
Должен быть способ сделать что-то вроде следующего кода, но в настоящее время я не могу найти способ:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRangeByName("A10");
var rangeID = range.**getRangeID()**;
sheet2.getRange("J10").setFormula('=hyperlink("#rangeID='+rangeID+'","link")');
Я знаю, что в настоящее время getRangeID()
не существует в доступных опциях для скрипта Google Apps; Однако есть ли что-то, что выполняет эту функцию? Было бы невероятно полезно, если бы эта команда существовала.
Любая помощь там? Есть ли другой способ сделать это, что я скучаю?
Спасибо за любую помощь!
Это идеальный вариант использования для именованных диапазонов, и он не требует каких-либо изменений в вашей логике скриптов.
var range = ss.getRangeByName("NamedRange1");
Я создал запрос функции для этого. https://issuetracker.google.com/issues/129841094