Есть ли пользовательская функция или скрипт, который возвращает гид определенного листа в Google Sheets? - PullRequest
2 голосов
/ 05 ноября 2019

Я пробираюсь сквозь огромное море знаний в Интернете, чтобы получить то, что мне нужно, но безрезультатно.

Контекст

В одном Google Sheetsфайл, у меня есть один главный лист и несколько других листов, названных в честь фамилий людей.

В основном листе я создал ячейку, в которой я могу ввести имя любого человека. Я хотел бы искать листы для нескольких лиц, поэтому мой поиск является динамическим. В любом случае, давайте назовем эту ячейку SEARCH CELL.

Прямо рядом с SEARCH CELL, у меня есть другая ячейка, в которую я хотел бы добавить гиперссылку на другой лист, который имеет фамилию, введенную в ячейку SEARCH. Давайте назовем эту ячейку с гиперссылкой HYPERLINK CELL. Поэтому, когда я нажимаю на эту ячейку, я хочу перейти к листу с фамилией человека, совпадающей с тем, что было введено в КЛЕТОК ПОИСКА.

Мне нужна помощь с этой ячейкой HYPERLINK.

=hyperlink("#gid=               ")

Как мне извлечь gid каждого листа и ввести в пустое место код выше?

Мне сказали, что для этого нет функции Google Sheets, поэтомунеобходима пользовательская функция или скрипт. Может ли кто-нибудь предоставить тот, который работает (то есть работает без ошибок), когда он вводится в редакторе сценариев?

1 Ответ

3 голосов
/ 05 ноября 2019

script:

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!" }}

формула:

=SHEETLIST()

превращает имена листов в активные гиперссылки:

=ARRAYFORMULA(HYPERLINK("#gid="&
 QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
 QUERY(INDEX(SHEETLIST();;1); "offset 1")))

и, если вы хотите привязать его к руководствуввод, который вы можете использовать VLOOKUP, например

=ARRAYFORMULA(IFNA(VLOOKUP(A1, HYPERLINK("#gid="&
 QUERY(INDEX(SHEETLIST();;2); "offset 1"); 
 QUERY(INDEX(SHEETLIST();;1); "offset 1")); 1; 0)))

, где A1 - ваша "поисковая ячейка"

...