web-dev-qa-db-fra.com

Lien hypertexte Google vers une feuille spécifique

Je souhaite ouvrir une feuille spécifique d'une feuille de calcul Google à partir d'un lien hypertexte dans une autre feuille de calcul.

J'ai un lien différent dans ma feuille de calcul principale et chaque lien doit avoir un lien hypertexte vers la même feuille de calcul esclave mais vers une feuille différente.

Je connais la fonction de lien hypertexte mais cela ne concerne pas une feuille spécifique.

Merci pour l'aide

10
ulisse

Vous pouvez utiliser cette fonction de script personnalisée (Outils> Editeur de script) et la connecter, par exemple, avec dessin personnalisé (Insérer> Dessin ...> Enregistrer et fermer, puis cliquez avec le bouton droit sur un nouveau dessin> Assigner un script ...> "goToSheet2")

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

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

Mettre à jour:
Dans la version la plus récente, vous pouvez sélectionner une cellule, ajouter un lien (Insérer> Lien) et sélectionner directement un lien vers une feuille spécifique:
 Insert link to sheet.

13
rejthy

La fonction HYPERLINK can est liée à une autre feuille du même classeur; si vous observez l'URL de la feuille de calcul, il y a à la fin #gid=xx est unique pour chaque feuille.

Le problème est que cela ouvrira la feuille comme une nouvelle instance de la feuille de calcul dans un autre onglet, ce qui n'est probablement pas souhaitable. La solution de contournement serait d'insérer des images ou des dessins sous forme de boutons, et de leur affecter un script qui activera des feuilles spécifiques.

9
AdamL

Vous pouvez également essayer de créer une fonction personnalisée. La feuille de calcul étant ouverte, cliquez sur le menu Outils , puis Editeur de script .... Collez le code dans l'éditeur:

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

Enregistrez, actualisez la feuille de calcul, puis tapez votre fonction personnalisée

=SHEETID("Your Custom Sheet Name")

=SHEETID(A1)

Et le tour est joué! L'identifiant unique de l'onglet (dans la feuille de calcul actuelle) est généré. Vous pouvez créer un lien hypertexte vers celui-ci en utilisant la formule suivante:

=HYPERLINK("#gid="&SHEETID(A1),"Link")
0
Matthew

Personnellement, je l'ai fait sur la base des propos de @rejthy: .___. Dans les scripts, j'ai créé cette fonction:

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

et puis dans ma feuille où j'ai besoin du lien, j'ai fait ceci: =HYPERLINK("#gid="&GET_SHEET_ID("Factures - "&$B$1);"Année en cours")

0
Adrien Schaegis

Ce que je comprends donc du PO, c’est que vous avez une feuille de calcul maîtresse sur laquelle vous souhaitez créer des liens vers des feuilles individuelles, une ou plusieurs de ces feuilles pouvant figurer dans un ou plusieurs fichiers de feuille de calcul.

La fonction HYPERLINK transforme uniquement une URL en hyperlien et n'est utile que lorsque vous souhaitez utiliser un lien hypertexte plutôt qu'un simple lien. Si vous entrez l'URL brute en tant que données, elle est automatiquement transformée en lien hypertexte. Aucun travail supplémentaire n'est donc nécessaire.

Comme mentionné dans d'autres réponses, la solution consiste à faire en sorte que l'URL de la feuille de calcul utilise la valeur gid pour calculer le lien vers la feuille souhaitée dans la feuille de calcul. Vous pouvez écrire une application simple qui collecte tous les liens des feuilles individuelles et les écrit dans le maître.

Vous trouverez ci-dessous des extraits de pseudocode (Python) pouvant vous aider à démarrer. Je laisse de côté tout le code d'authentification standard, mais si vous en avez besoin, consultez this blog post et this video . Le code ci-dessous suppose que votre point de terminaison de service d'API est SHEETS.

Cela lit une feuille de calcul cible pour créer des liens pour chacune de ses feuilles:

# 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']))

Au lieu d’imprimer à l’écran, supposons que vous les ayez stockés dans un tableau (name, URL) 2-Tuple dans votre application, si bien qu’elle ressemble à cette liste appelée 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')
]

Vous pouvez ensuite les écrire dans le maître (en partant du coin supérieur gauche, de la cellule A1), comme suit:

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

Quelques mises en garde lors de l’utilisation de gid:

  • La première feuille par défaut créée pour vous (Feuille1) a toujours un gid=0.
  • Toutes les feuilles que vous ajoutez après cela auront une gid aléatoire.
  • Toutefois, ne comptez pas sur un gid=0 pour la 1ère feuille de votre feuille de calcul, car vous ou une autre personne avez peut-être supprimé la feuille par défaut d'origine, comme dans l'exemple ci-dessus.

Si vous souhaitez voir plus d'exemples d'utilisation de l'API Sheets, voici d'autres vidéos que j'ai réalisées (ainsi que des articles décrivant chaque exemple de code):

Ensuite, lorsque vous ouvrez le masque dans l'interface utilisateur de Sheets, vous pouvez cliquer sur l'une des feuilles individuelles, quel que soit le fichier de feuille de calcul dans lequel elles se trouvent. Si vous souhaitez qu'elles soient automatiquement ouvertes par une autre application ou un autre script, la plupart des langages de programmation offrent aux développeurs une façons de lancer un navigateur Web en fonction de l'URL cible. En Python, ce serait le module webbrowser ( docs ):

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