10

Vorrei aprire un foglio specifico di un foglio di calcolo Google da un collegamento ipertestuale in un altro foglio di calcolo.Collegamento ipertestuale del foglio di calcolo Google a un foglio specifico

Ho un collegamento diverso nel mio foglio di calcolo principale e ogni dovrebbe avere un collegamento ipertestuale allo stesso foglio di lavoro secondario ma a un foglio diverso.

Conosco la funzione di collegamento ipertestuale, ma non funziona su un foglio specifico.

Grazie per l'aiuto

risposta

9

La funzione HYPERLINKpuò collegamento a un altro foglio nella stessa cartella di lavoro; se si osserva l'URL del foglio di calcolo, alla fine di esso c'è #gid=x dove x è univoco per ogni foglio.

Il problema è che aprirà il foglio come una nuova istanza del foglio di calcolo in un'altra scheda, che probabilmente non è desiderabile. La soluzione alternativa sarebbe inserire immagini o disegni come pulsanti e assegnare loro uno script che attivi fogli specifici.

+4

Incredibile questa non è una funzione standard. Grazie per la soluzione alternativa – Brandon

+1

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). –

11

È possibile utilizzare questa funzione di script personalizzato (Strumenti> Script Editor) e collegarla con ad es. disegno personalizzato (Inserisci> Disegno ...> Salva e chiudi, quindi fare clic destro sul nuovo disegno> Assegna Script ...> "goToSheet2")

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

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

Aggiornamento:
Nella nuova versione è possibile selezionare la cella e aggiungere link (Inserisci> link) e selezionare link alla scheda specifica direttamente:
Insert link to sheet.

+0

La migliore risposta e l'opzione data qui, l'aggiornamento **: uno. –

0

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) 
0

ho personnaly fatto questo sulla base di ciò che @rejthy detto: Negli script ho creato questa funzione:

/** 
* 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; 
} 

e poi nella mia foglio in cui ho bisogno del collegamento Ho fatto questo: =HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

0

In alternativa, puoi provare a creare una funzione personalizzata. Con il foglio di calcolo aperto, fare clic sui Strumenti menu, quindi editor di script .... Incollare il codice nell'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(); 
} 

Salva, aggiornare il foglio di calcolo, e quindi digitare la funzione personalizzata

=SHEETID("Your Custom Sheet Name") 

=SHEETID(A1) 

E voilà!Viene emesso l'ID univoco per la scheda (nel foglio di calcolo corrente). È possibile eseguire il collegamento ipertestuale utilizzando la seguente formula:

=HYPERLINK("#gid="&SHEETID(A1),"Link") 
Problemi correlati