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)
Unglaublich, das ist keine Standardfunktion. Vielen Dank für die Problemumgehung – Brandon
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). –