vendredi 16 mars 2012

Créer un lien vers une feuille dans Google Spreadsheet

28 commentaires
Dans Google Spreadsheet il n'est pas possible pour le moment de créer un lien vers une feuille du même classeur pour se déplacer dans le document. Ce type de lien est pratique et évite d'avoir se déplacer sur le bas du document pour sélectionner la feuille que l'on veut atteindre.
Heureusement il y a une solution, pour cela il faut passer par un script et insérer un bouton auquel on affectera le script.

Comment créer un lien vers une feuille dans Google Spreadsheet
Voici les étapes à suivre :
  1. Créer un script qui redirige vers la feuille désirée.
  2. Créer un bouton avec l'outil Dessin de Google Spreadsheet.
  3. Affecter le script à ce bouton.
Explications
Pour ce billet j'ai créé une présentation avec Google Présentation qui explique pas à pas comment créer ce bouton et comment créer le script. La présentation est disponible ci-dessous, cliquez sur le bouton play en bas à gauche pour lancer la présentation.
Pour la mise en pratique il faudra le code du script :
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName('NOMDELAFEUILLE'));
Après il suffit de créer autant de fonctions (function) que de liens que vous voulez faire. Attention chaque fonction doit avoir un nom différent.

Bon visionnage ;-)

28 Responses so far

  1. Merci pour cet excellent tuto mais vous auriez pu utiliser la création d'un menu dans l'interface utilisateur ?

  2. st3ph says:

    Bonjour

    Oui on pourrait faire un menu mais je trouve que c'est plus pratique de faire un bouton.
    On peut le mettre où on veut, dans un tableau de bord ça s'intègre bien et pour activer le script cela se fait en un clic au lieu de deux si c'est dans un menu qui en plus est tout en haut.
    Je trouve aussi que c'est plus simple à mettre en place pour quelqu'un qui ne serait pas trop familier des scripts.

  3. Anonyme says:

    bonjour,
    merci pour ce tuto qui me change la vie (cela fait des mois que je cherche)c'est exactement ce que je cherchais!!
    même un débutant comme moi à compris alors c'est dire :)

  4. st3ph says:

    Merci, ça devrait inciter d'autres personnes à le faire :-)

  5. Anonyme says:

    rebonjour,
    J'ai un autre problème maintenant;
    quand j'envoie le lien à d'autres personne avec qui je partage mes tableaux,"pour eux" les boutons ne fonctionnes pas!??
    alors qu'ils ont accès en écriture etc...
    (cela ne change en rien à la qualité de ce TUTO mais je ne vois pas la faille)
    Auriez vous une idée?
    en tout cas merci!

  6. st3ph says:

    Je viens de faire un test et en fait quand on clique pour la première fois sur le bouton il y a un message qui demande l'autorisation d'exécution du script. Est ce que les personnes ont bien cliqué sur ok ?
    La seconde fois ça marche normalement.

  7. Anonyme says:

    NON pas de message concernant le script.
    Le bouton n'est pas actif "pour les collaborateurs"
    Je vais continuer à chercher l'erreur et passerais l'info.
    Si je trouve...

  8. st3ph says:

    Franchement je ne sais pas. J'ai été dans partage et j'ai ajouté l'email d'un de mes autres comptes avec les droits en modification. Quand j'ouvre le fichier avec mon autre compte une fois que j'ai validé le message lors de la première exécution ça marche.
    Par contre l'option personnes avec le lien ça ne marche pas il faut que les personnes aient un compte google.

  9. Anonyme says:

    Bonjour Stéphane.

    Je viens de consulter cette page :
    https://developers.google.com/apps-script/guide_security?hl=fr
    Et il semble bien que les usagers qui n'ont pas accès en modification ne peuvent exécuter des script.

    Au plaisir

    Jean Québec.

  10. st3ph says:

    Merci Jean ça complète bien ce billet.
    Tout ne peut pas être parfait :-) je testerai quand même pour valider.

  11. st3ph says:

    testé et confirmé, en mode consultation ça ne marche pas :-)

    Re merci Jean :-)

  12. Anonyme says:

    Il existe beaucoup plus simple et qui fonctionne parfaitement.

    https://productforums.google.com/forum/#!category-topic/docs-fr/forum/gmgwAypdYhM

    DomBau

  13. Anonyme says:

    Excuse moi Stéphane, mais il y a eu confusion sur l'interprétation du mot lien.
    A+
    DomBau

  14. st3ph says:

    Pas de pb ok pour moi.

    Stéphane

  15. Anonyme says:

    Bonjour,
    ce jours, tu oublies de parler de l'amélioration apportée par DomBau à ton script
    Voir le lien https://productforums.google.com/forum/#!category-topic/docs-fr/forum/v8wb2C1v6-o

    Ceci prouve absolument ta mauvaise foi comme pour les fonctions.
    DomBau

  16. st3ph says:

    Bonjour

    Je n'ai plus 5 ans.
    Au moins cette fois je n'ai pas copié ton idée...
    Je ne parle pas de ton script car je n'ai pas d'obligation d'en parler et en plus je ne trouve pas cela pratique.

    Stéphane

  17. Anonyme says:

    Il est quand même plus pratique et souple que ta merde.
    Quelle mauvaise foi.
    Je ye laisse baigner dans ta connerie.
    DomBau

  18. Anonyme says:

    Bonjour,

    j'ai une question, est-il possible de faire passer des arguments au script dans le bouton? Par exemple pour choisir une page et faire un seul script pour plusieurs boutons.
    J'ai essayé de nombreuses syntaxes et il m'est toujours indiqué que "La fonction de script est introuvable"

    Merci d'avance

  19. st3ph says:

    Bonjour

    Non ce ne sera pas possible malheureusement.

    Stéphane

  20. Anonyme says:

    C'est étrange, parceque lorsque je donne le script sans argument je reçois un message comme quoi l'argument ne convient pas (et pour cause, il est vide^^). J'imaginais donc qu'il y avait moyen de gérer ça :(

    Du coup je vais faire des fonctions alias du genre GoTopage1 qui appellent Goto(mapage1). C'est crade mais tant pis.

    Merci pour ta réponse rapide Stéphane! :)

  21. st3ph says:

    Si ta fonction appelle un argument effectivement ça va générer une erreur, mais si tu utilises l'appel à la fonction par le dessin tu ne pourras pas spécifier l'argument.

    Stéphane

  22. ce script m'aide beaucoup. pour aller plus loin y'a-t-il un moyen pour pointer une cellule spécifique dans la feuille de calcul que l'on appelle?

  23. st3ph says:

    Bonjour

    Tu peux essayer la classe activate() https://developers.google.com/apps-script/reference/spreadsheet/range?hl=FR#activate%28%29

    Ca donnerait

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.setActiveSheet(ss.getSheetByName('NOMDELAFEUILLE'));
    ss.getSheetByName('NOMDELAFEUILLE').getRaneg("B3").activate();

    ou

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.getSheetByName('NOMDELAFEUILLE').getRaneg("B3").activate();

    A tester
    Stéphane

  24. Ce commentaire a été supprimé par l'auteur.
  25. Bonsoir,
    Je me trouve confronté a un problème.
    Après avoir terminé une page google sheet je voudrais pouvoir l'introduire dans une présentation google slide. Je n'est pas réussi ni a importer depuis google slide, ni à exporter en jpeg depuis google sheet ! Quelqu'un aurait une solution ?
    Bonne soirée,
    Jean-Philippe

  26. J says:

    Bonjour,
    Merci pour les Scripts, juste une petite faute de frappe dans le dernier, à la place de getRaneg("B3").activate(); il faut taper getRange. Une petite inversion entre "e" et "g".
    Sinon il marche très bien.
    Encore Merci
    JMLR

  27. Est-ce que je peux assigner ce script à une forme var
    ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.setActiveSheet(ss.getSheetByName('NOMDELAFEUILLE'));
    ss.getSheetByName('NOMDELAFEUILLE').getRaneg("B3").activate();

  28. Bonjour, j'ai utilisé ce script dans sheets et pour l'instant il fonctionne bien, par contre j'aurai voulu savoir comment faire pour renvoyer a un groupe de cellules sur la même page?
    Pour être plus précise:j'ai un tableau à remplir par jour travaillé, 1 onglet par mois, donc environ 20 tableaux par onglets, et je voudrai pourvoir accéder à la bonne plage de cellules (en fonction de la date) en un simple clic (pour éviter que le 31 du mois, je fasse chauffer la roulette de la souris...)
    merci d'avance pour votre réponse...

Leave a Reply