10

Ich möchte ein bestimmtes Blatt einer Google-Tabelle aus einem Hyperlink in einer anderen Tabelle öffnen.Google Tabellenkalkulation Hyperlink zu einem bestimmten Blatt

Ich habe unterschiedliche Verknüpfung in meinem Master-Arbeitsblatt, und jeder sollte einen Hyperlink zu der gleichen Slave-Tabelle, sondern zu anderen Blatt haben.

Ich kenne Hyperlink-Funktion, aber es ist nicht zu einem bestimmten Blatt.

Danke für die Hilfe

Antwort

9

Die HYPERLINK Funktion kann Link zu einem anderen Blatt in derselben Arbeitsmappe; Wenn Sie die URL der Tabelle beobachten, wird am Ende #gid=x angezeigt, wobei x für jedes Blatt eindeutig ist.

Das Problem ist, es wird das Blatt als eine neue Instanz der Kalkulationstabelle in einem anderen Tab öffnen, was wahrscheinlich nicht wünschenswert ist. Die Problemumgehung besteht darin, Bilder oder Zeichnungen als Schaltflächen einzufügen und ihnen ein Skript zuzuweisen, das bestimmte Blätter aktiviert.

+4

Unglaublich, das ist keine Standardfunktion. Vielen Dank für die Problemumgehung – Brandon

+1

Ich fand diese Antwort hilfreich .. Nur einen Kommentar hinzufügen: die "öffnet in einem anderen [Browser] Registerkarte" ist wirklich nur ein Problem, wenn Sie dieses Arbeitsblatt aus dem gleichen Tabellenkalkulationsdokument verknüpfen. Wenn Ihr Beispiel wie meins ist, verbinden Sie eine HTML- oder Wiki-Seite mit einem bestimmten Arbeitsblatt, dann keine Sorge ... der #gid-Trick funktioniert (SOLANGE niemand Arbeitsblatt-Tabs löscht ... sehr wichtig zu beachten Das #gid ist eine FIXED POSITION Nummer, also wäre das 4. Arbeitsblatt von links # gid = 3). –

11

Sie können diese benutzerdefinierte Skriptfunktion (Tools> Skript-Editor) verwenden und sie mit z. benutzerdefinierte Zeichnung (Einfügen> Zeichnung ...> Speichern und schließen, dann klicken Sie rechts auf neue Zeichnung> Assign Script ...> "goToSheet2")

function goToSheet2() { 
    goToSheet("Sheet2"); 
} 

function goToSheet(sheetName) { 
    var sheet = SpreadsheetApp.getActive().getSheetByName(sheetName); 
    SpreadsheetApp.setActiveSheet(sheet); 
} 

Update:
In der neuesten Version können Sie wählen Sie Zelle und fügen Link (Insert> Link) und wählen Sie Link auf bestimmte Blatt direkt:
Insert link to sheet.

+0

Beste Antwort und Option hier gegeben, das ** Update: ** ein. –

0

Also, was ich aus dem OP verstehen ist, dass Sie eine Master-Tabelle, die Sie Links zu den einzelnen Blätter haben möchten, wo ein oder mehrere dieser Blätter einzeln oder in mehreren sein können e Tabellenkalkulationsdateien.

Die Funktion HYPERLINK verwandelt nur eine URL in einen Hyperlink und ist wirklich nur nützlich, wenn Sie Hypertext statt nur einen Link haben möchten. Wenn Sie die rohe URL als Daten eingeben, wird diese automatisch in einen Hyperlink umgewandelt, sodass keine zusätzlichen Arbeiten erforderlich sind.

Wie in anderen Antworten erwähnt, besteht die Lösung darin, dass die URL der Tabelle den Wert gid verwendet, um den Link zum gewünschten Blatt in der Tabelle zu berechnen. Sie können eine einfache App schreiben, die alle Links der einzelnen Blätter sammelt und in den Master schreibt.

Im Folgenden finden Sie einige Schnipsel von Pseudocode (Python), die Ihnen den Einstieg erleichtern können. Ich lasse den Autorisierungscode für den Standardcode aus, aber wenn Sie ihn benötigen, siehe this blog post und this video. Der folgende Code geht davon aus, dass Ihr API-Dienstendpunkt SHEETS ist.

Dies liest ein Ziel Arbeitsblatt-Links für jedes seiner Blätter zu bauen:

# open target Sheet, get all sheets & Sheet URL 
SHEET_ID = TARGET_SHEET_DRIVE_FILE_ID 
res = SHEETS.spreadsheets().get(spreadsheetId=SHEET_ID, 
     fields='sheets,spreadsheetUrl').execute() 
sheets = res.get('sheets', []) 
url = res['spreadsheetUrl'] 

# for each sheet, dump out its name & full URL 
for sheet in sheets: 
    data = sheet['properties'] 
    print('** Sheet title: %r' % data['title']) 
    print(' - Link: %s#gid=%s' % (url, data['sheetId'])) 

Anstatt Druck auf den Bildschirm, lassen Sie uns sagen, dass Sie sie in einem in der App (name, URL) 2-fach-Array gespeichert, so Boden -Linie, sieht es so etwas wie diese Liste sheet_data genannt:

sheet_data = [ 
    ('Intro', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=5'), 
    ('XData', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=3'), 
    ('YData', 'https://docs.google.com/spreadsheets/d/SHEET_ID/edit#gid=7') 
] 

Sie können sie mit dem Master dann schreiben (ausgehend von der oberen linken Ecke, Zelle A1) wie folgt aus:

SHEET_ID = MASTER_SHEET_DRIVE_FILE_ID 
SHEETS.spreadsheets().values().update(
    spreadsheetId=SHEET_ID, range='A1', 
    body={'values': sheet_data}, 
    valueInputOption='USER_ENTERED' 
).execute() 

Einige Einschränkungen bei gid mit:

  • Das erste Blatt Standard für Sie erstellt (Sheet1) hat immer eine gid=0.
  • Alle Blätter, die Sie danach hinzufügen, haben eine zufällige gid.
  • Setzen Sie nicht auf eine gid=0 für das erste Blatt in Ihren Tabellenkalkulationen, wie Sie oder jemand anderes möglicherweise das ursprüngliche Standardblatt gelöscht haben, wie mein Beispiel oben.

Wenn Sie weitere Beispiele für die Verwendung der Blätter API, um zu sehen, sind hier mehr Videos, die ich gemacht habe (zusammen mit den Beiträgen, die in jedes Codebeispiel tauchen):

Wenn Sie den Master dann auf der Benutzeroberfläche von Google Tabellen öffnen, können Sie unabhängig von den Tabellenkalkulationsdateien auf die einzelnen Tabellen klicken. Wenn Sie möchten, werden sie automatisch von einer anderen App oder einem Skript geöffnet bieten Sie Entwicklern eine Möglichkeit, einen Webbrowser mit der Ziel-URL zu starten. In Python, würde es die webbrowser Modul (docs) sein:

import webbrowser 
webbrowser.open_new(url) # or webbrowser.open_new_tab(url) 
0

ich personnaly hat dies auf das, was @rejthy sagte: in Skripten habe ich diese Funktion:

/** 
* Return the id of the sheet. (by name) 
* 
* @return The ID of the sheet 
* @customfunction 
*/ 
function GET_SHEET_ID(sheetName) { 
    var sheetId = SpreadsheetApp.getActive().getSheetByName(sheetName).getSheetId(); 
    return sheetId; 
} 

und dann in meinem Blatt, wo ich den Link brauche Ich tat dies: =HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

0

Alternativ können Sie versuchen, eine benutzerdefinierte Funktion zu erstellen. Mit der Tabelle öffnen, klicken Sie auf das Werkzeuge Menü, dann Script-Editor .... Fügen Sie den Code in den Editor:

/** 
* Gets the Sheet ID from Sheet Name 
* 
* @param {string} input The Sheet Name 
* @return The Sheet ID 
* @customfunction 
*/ 
function SHEETID(input) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var tab = ss.getSheetByName(input); 
    return tab.getSheetId(); 
} 

speichern, aktualisieren Sie die Tabelle, und geben Sie dann in Ihrer benutzerdefinierten Funktion

=SHEETID("Your Custom Sheet Name") 

=SHEETID(A1) 

Und voila!Die eindeutige ID für die Registerkarte (in der aktuellen Tabelle) wird ausgegeben. Sie können mit der folgenden Formel einen Hyperlink zu ihm erstellen:

=HYPERLINK("#gid="&SHEETID(A1),"Link") 
Verwandte Themen