it-swarm.com.de

Link zu einem bestimmten Blatt in der Google-Tabelle

Ich habe eine komplizierte Google-Tabelle mit vielen Blättern und einem Inhaltsverzeichnis. Gibt es eine Möglichkeit, einen Link zu den Blattnamen zu erstellen, sodass Sie mit einem Klick direkt zum Blatt wechseln können? Das heißt: Klicken auf die Zelle "sheet5" wechselt zu sheet5?

47
JBWhitmore

Wenn Sie in Google Spreadsheets zu einem anderen Blatt wechseln, beachten Sie die URL in der Adressleiste Ihres Browsers. Am Ende der URL sollte Folgendes stehen:

#gid=0

Diese Nummer ändert sich beim Wechseln der Blätter und gibt an, welches Blatt angezeigt werden soll. Kopieren Sie die gesamte URL und erstellen Sie einen Hyperlink mit dieser Formel:

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

Mit einem Skript

Seit ich diese Antwort geschrieben habe, habe ich viel über diese Frage nachgedacht und eine Lösung gefunden, die ein Skript beinhaltet.

Klicken Sie bei geöffneter Tabelle auf das Menü Extras und dann auf Skripteditor ... . Fügen Sie den gesamten Code in den Editor ein:

function onOpen(event) {
  var ss = event.source;
  var menuEntries = [];
  menuEntries.Push({name: "Go to sheet...", functionName: "showGoToSheet"});
  ss.addMenu("Tasks", menuEntries);
}

function showGoToSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var allsheets = ss.getSheets();
  var app = UiApp.createApplication();
  app.setTitle("Go to sheet...").setWidth(800).setHeight(600);
  var table = app.createFlexTable();
  table.setCellPadding(5).setCellSpacing(0);
  var goToSheetClick = app.createServerHandler('handleGoToSheetClick');
  var widgets = [];
  for (var i = 0; i < allsheets.length; i++) {
    var sheet_name = allsheets[i].getName();
    widgets[i] = app.createHTML(sheet_name).setId(sheet_name).addClickHandler(goToSheetClick);
    table.setWidget(i, 1, widgets[i])
  }
  var panel = app.createSimplePanel();
  panel.add(table);
  app.add(panel);
  ss.show(app);
}

function handleGoToSheetClick(e) {
  var sheet_name = e.parameter.source;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheet_name);
  sheet.activate();
  var app = UiApp.getActiveApplication();
  app.close();
  return app;
}

Speichern Sie das Skript und aktualisieren Sie die Tabelle. Nach ein oder zwei Sekunden erscheint ein neues Menü Aufgaben nach Hilfe . In diesem Menü gibt es einen Punkt: Gehe zum Blatt ...

Tasks > Go to sheet...

Dieser Menüpunkt öffnet ein Fenster mit einer Liste der Namen aller Blätter in der aktuellen Tabelle. Es sieht nicht so aus, aber wenn Sie auf einen der Blattnamen klicken, wird dieses Blatt in den Vordergrund gerückt.


Als Antwort auf eine andere Frage dieses Skript wurde verbessert um eine scrollbare Ansicht und Schaltflächen einzuschließen.

59
William Jackson

Der beste Weg, dies aus meiner Erfahrung heraus zu tun, besteht darin, eine Funktion an eine Schaltfläche/ein Bild zu binden. Der einzige Nachteil ist, dass Sie keine Parameter zusammen mit einem Skript übergeben können, das einer Schaltfläche zugewiesen ist. Aus diesem Grund müssen Sie für jede Navigation eine spezifische Funktion festlegen, die jedoch auch in einer einzelnen Skriptdatei aufgerufen werden kann.

Schritte:

Erstellen Sie ein Bild (Einfügen -> Bild) und gestalten Sie es nach Ihren Wünschen

Erstellen Sie eine benutzerdefinierte Funktion mit folgenden Elementen:

function showSheetByName(Name) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheet = ss.getSheetByName(Name);
   SpreadsheetApp.setActiveSheet(sheet);
}

und dann eine spezifische Funktion für Ihre Taste

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

Weisen Sie diese Funktion schließlich Ihrer Taste zu

Assign Script...
showSheet5

Sie sollten nun in der Lage sein, auf Ihre Schaltfläche zu klicken und zu "Sheet5" zu navigieren. Dies kann auch geändert werden, um auf einen bestimmten Bereich des Blatts zuzugreifen.

7
LoganDell