Quindi quello che ho capito dalla OP è che avete un foglio di calcolo master che si desidera avere collegamenti a singoli fogli, dove uno o più di questi fogli possono essere in singolo o multiplo e file di foglio di calcolo.
La funzione HYPERLINK
trasforma un URL solo in un collegamento ipertestuale ed è davvero utile solo quando si desidera avere un ipertesto anziché solo un collegamento. Se inserisci l'URL non elaborato come dati, viene automaticamente trasformato in un collegamento ipertestuale, quindi non c'è lavoro aggiuntivo.
Come accennato in altre risposte, la soluzione è di avere l'URL del foglio di calcolo quindi utilizzare il valore gid
per calcolare il collegamento al foglio desiderato all'interno del foglio di calcolo. Puoi scrivere una semplice app che raccoglie tutti i link dei singoli fogli e li scrive nel master.
Di seguito sono riportati alcuni snippet di pseudocode (Python) che possono aiutarti a iniziare. Sto tralasciando tutto il codice di autorizzazione del boilerplate, ma se ne hai bisogno, vedi this blog post e this video. Il codice seguente presuppone che l'endpoint del servizio API sia SHEETS
.
Questa legge un foglio di calcolo obiettivo di costruire legami di ciascuno dei suoi fogli:
# 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']))
Invece di stampare sullo schermo, diciamo che li memorizzato in una (name, URL)
matrice 2-tuple nella vostra app, così in basso -line, sembra qualcosa di simile a questa lista chiamata sheet_data
:
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')
]
è quindi possibile scrivere al master (a partire dall'angolo in alto a sinistra, cellule A1
) come questo:
01.235.164,106 mila
SHEET_ID = MASTER_SHEET_DRIVE_FILE_ID
SHEETS.spreadsheets().values().update(
spreadsheetId=SHEET_ID, range='A1',
body={'values': sheet_data},
valueInputOption='USER_ENTERED'
).execute()
Alcuni avvertimenti quando si utilizza gid
:
- Il primo foglio predefinito creato per voi (Foglio1) ha sempre un
gid=0
.
- Qualsiasi foglio aggiunto dopo avrà un numero casuale
gid
.
- Non effettuare il bonifico su un per il 1 ° foglio nei fogli di calcolo, tuttavia come voi o qualcun altro potrebbe aver eliminato il foglio predefinito originale, come nell'esempio precedente.
Se volete vedere altri esempi di utilizzando l'API Fogli, qui ci sono altri video che ho fatto (insieme a messaggi che approfondire ogni esempio di codice):
Quindi, quando apri il master nell'interfaccia utente di Sheets, puoi fare clic su uno qualsiasi dei singoli fogli, indipendentemente dai fogli di lavoro in cui si trovano. Se desideri che vengano aperti automaticamente da un'altra app o script, la maggior parte dei linguaggi di programmazione offrire agli sviluppatori un modo per avviare un browser Web dato l'URL di destinazione. In Python, sarebbe il modulo webbrowser
(docs):
import webbrowser
webbrowser.open_new(url) # or webbrowser.open_new_tab(url)
Incredibile questa non è una funzione standard. Grazie per la soluzione alternativa – Brandon
ho trovato utile questa risposta .. Semplicemente aggiungendo un commento: il "apre in un'altra scheda [browser]" è davvero solo un problema se si collega quel foglio di lavoro dallo stesso foglio di calcolo. Se il tuo esempio è come il mio, stai collegando una pagina HTML o wiki a un foglio di lavoro specifico, quindi non ti preoccupare .... il trucco #gid funziona (AS LONG AS nessuno cancella tutte le schede del foglio di lavoro ... molto importante notare quel #gid è un numero POSIZIONE FISSA, quindi il 4 ° foglio di lavoro da sinistra sarebbe # gid = 3). –