Ссылка на конкретный лист в электронной таблице Google

У меня сложная электронная таблица Google со многими листами и оглавлением. Есть ли способ создать ссылку на имена листов, чтобы с помощью щелчка можно перейти непосредственно к листу? То есть: нажатие на ячейку «sheet5» переключается на sheet5?

45 голосов | спросил JBWhitmore 21 MaramWed, 21 Mar 2012 10:03:00 +04002012-03-21T10:03:00+04:0010 2012, 10:03:00

2 ответа


56

При переходе на другой лист в таблицах Google обратите внимание на URL-адрес в адресной строке браузера. В конце URL-адреса вы увидите что-то вроде:

  # GID = 0
 

Это число изменяется при переключении листов и указывает, какой лист отображать. Скопируйте весь URL-адрес и создайте гиперссылку на него с помощью этой формулы:

  = hyperlink ("https://docs.google.com/spreadsheet/ccc?key=0AsaQpHJE_LShcDJ0dWNudHFZWVJqS1dvb3FLWkVrS0E#gid=0", "LINK TEXT")
 

С помощью скрипта

Я много думал об этом вопросе с тех пор, как впервые написал этот ответ, и придумал решение, которое включает скрипт.

Открыв таблицу, откройте меню Сервис , затем Редактор сценариев ... . Вставьте весь этот код в редактор:

  function onOpen (event) {
  var ss = event.source;
  var menuEntries = [];
  menuEntries.push ({name: «Перейти к листу ...», functionName: «showGoToSheet»});
  ss.addMenu («Задачи», menuEntries);
}

function showGoToSheet () {
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var allsheets = ss.getSheets ();
  var app = UiApp.createApplication ();
  app.setTitle («Перейти к листу ...»). setWidth (800) .setHeight (600);
  var table = app.createFlexTable ();
  table.setCellPadding (5) .setCellSpacing (0);
  var goToSheetClick = app.createServerHandler ('handleGoToSheetClick');
  var widgets = [];
  для (var i = 0; i <allsheets.length; i ++) {
    var sheet_name = allsheets [i] .getName ();
    widgets [i] = app.createHTML (имя_файла) .setId (имя_файла) .addClickHandler (goToSheetClick);
    table.setWidget (i, 1, widgets [i])
  }
  var panel = app.createSimplePanel ();
  panel.add (таблица);
  app.add (панель);
  ss.show (приложение);
}

function handleGoToSheetClick (e) {
  var sheet_name = e.parameter.source;
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var sheet = ss.getSheetByName (имя_файла);
  sheet.activate ();
  var app = UiApp.getActiveApplication ();
  app.close ();
  return app;
}
 

Сохраните сценарий, а затем обновите таблицу. Через секунду или два появится новое меню Задачи , после Справка . В этом меню есть один элемент: Перейти к листу ...

Задачи> Перейти к листу ...

Этот пункт меню откроет панель со списком имен всех листов в текущей электронной таблице. Это не похоже на это, но если вы нажмете на одно из имен листов, этот лист появится спереди.


В качестве ответа на другой вопрос этот скрипт был улучшен , чтобы включить прокручиваемое представление и кнопки.

ответил William Jackson 22 MarpmThu, 22 Mar 2012 22:31:44 +04002012-03-22T22:31:44+04:0010 2012, 22:31:44
7

Лучший способ сделать это из моего опыта - связать функцию с кнопкой /изображением. Единственным недостатком является то, что вы не можете передавать параметры вместе со сценарием, назначенным кнопке. В связи с этим вам нужно будет создать функцию, специфичную для каждой навигации, но они могут быть вызваны в одном файле сценария.

Шаги:

Создайте изображение (Вставить -> изображение) и настройте его по своему усмотрению

Создайте пользовательскую функцию со следующими параметрами:

  function showSheetByName (Name) {
   var ss = SpreadsheetApp.getActiveSpreadsheet ();
   var sheet = ss.getSheetByName (Имя);
   SpreadsheetApp.setActiveSheet (лист);
}
 

, а затем функция, специфичная для вашей кнопки

  function showSheet5 () {
   showSheetByName ( "Sheet5");
}
 

Наконец, назначьте эту функцию вашей кнопке

  Назначить скрипт ...
showSheet5
 

Теперь вы можете нажать на свою кнопку и перейти к «Sheet5». Это также можно изменить, чтобы перейти к определенной области листа.

ответил LoganDell 9 Mayam13 2013, 06:51:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132