Partage
  • Partager sur Facebook
  • Partager sur Twitter

Google Sheet Fonction Importrange Autorisation

    16 novembre 2021 à 16:17:11

    Bonjour à tous et toutes,

    Je travail actuellement sur une feuille "SOMMAIRE" qui fais appel à plusieurs autres feuilles de calcul avec la fonction IMPORTRANGE, ayant beaucoup de lien à valider: "Vous devez associer ces feuilles: Autoriser l'accès".

    Je voudrai savoir si il existe une option ou un script qui permet d'autoriser tous les accès dans ma feuille "SOMMAIRE".

    Information importante, je suis propriétaire de toutes les feuilles, même les externes.

    Merci d'avance.

    Bonne journée.

    • Partager sur Facebook
    • Partager sur Twitter
      17 novembre 2021 à 11:10:19

      a priori non, pas faisable, mais l'autorisation n'est à donner qu'une seule fois 

      https://support.google.com/docs/answer/3093340?hl=fr 

      Remarques
      Il est nécessaire d'autoriser explicitement les feuilles de calcul à extraire les données d'autres feuilles via la fonction IMPORTRANGE. Lorsqu'une feuille de destination extrait pour la première fois des données à partir d'une nouvelle feuille source, un message s'affiche pour demander à l'utilisateur d'autoriser cet accès. Une fois l'autorisation donnée, tous les éditeurs de la feuille de calcul de destination peuvent utiliser la fonction IMPORTRANGE pour extraire des données à partir de n'importe quelle partie de la feuille de calcul source. L'autorisation d'accès reste valide jusqu'à ce que l'utilisateur qui l'a accordée soit supprimé de la source.

      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2021 à 17:05:59

        Umfred,

        Bonjour, merci pour ton retour.

        Je te confirme qu'il ne faut le valider qu'une seule fois par fichier, mais justement j'ai pas loin de 1000 feuilles à associer.

        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2022 à 8:20:27

          Bonjour,

          Y a t-il des évolutions dans Google Sheet qui permettent désormais de faire cette autorisation via macro ?

          Merci d'avance.

          Bonne journée.

          • Partager sur Facebook
          • Partager sur Twitter
            28 février 2022 à 15:45:20

            non et je ne pense pas, pour des raisons de sécurité/confidentialité des fichiers sources
            • Partager sur Facebook
            • Partager sur Twitter
              3 juin 2022 à 13:36:18

              Idem,

              Toutes les semaines je génère par script environ 90 google sheet ou je réalise via un template un ensemble de calcul et ramène le tous dans un google sheet unique pour analyse. (je dépasse les 40 millions de cellule, donc pas possible de revoir le script pour tout faire dans un seul google docs)

              Mais je dois à la fois ouvrir les 90 fichiers pour leurs données accès à ma feuille principale pour importer des paramètre puis valider sur la feuille principale l'ensemble des 90 feuilles de calculs.

              J'aimerai pouvoir donnée cette autorisation via un script.

              • Partager sur Facebook
              • Partager sur Twitter
                8 novembre 2022 à 16:20:32

                Bonjour,

                A aujourd'hui, le seul script que j'ai trouvé est celui-ci:

                function addImportrangePermission() {
                  // id of the spreadsheet to add permission to import
                  const ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
                
                  // donor or source spreadsheet id, you should get it somewhere
                  const donorId = '1GrELZHlEKu_QbBVqv...';
                
                  // adding permission by fetching this url
                  const url = `https://docs.google.com/spreadsheets/d/${ssId}/externaldata/addimportrangepermissions?donorDocId=${donorId}`;
                
                  const token = ScriptApp.getOAuthToken();
                
                  const params = {
                    method: 'post',
                    headers: {
                      Authorization: 'Bearer ' + token,
                    },
                    muteHttpExceptions: true
                  };
                  
                  UrlFetchApp.fetch(url, params);
                }

                Cependant, je n'y trouve pas encore d'intérêt, car il faut y enregistrer l'id manuellement dans la ligne:

                const donorId = '1GrELZHlEKu_QbBVqv...';

                J'ai essayé pas mal de manipulation en me disant, que si j'arrive à récupérer l'id de mon IMPORTRANGE et que j'arrive à définir que mon id ce trouve dans la cellule associé, alors je pourrais éventuellement bouclé dessus et arrivée à autoriser en masse.

                Cependant mon niveau de compréhension du code ne me le permet pas, je partage cependant avec vous mon avancé si jamais quelqu'un à des idées.

                Pour l'extraction de l'id, voila comment je procède:

                Une feuille Google Sheet avec 3 colonnes

                Colonne 1: =IMPORTRANGE(B1;"'Nom de ma Feuille d'export'!$A$1:$A")

                Colonne 2: Lien de la feuille de type (https://docs.google.com/spreadsheets/d/...)

                Colonne 3: utilisation de la fonction suivante =STXT(B1;TROUVE("d/";B1)+2;TROUVE("/edit";B1)-TROUVE("d/";B1)-2)

                Cette troisième colonne me permet d'extraire l'id contenue dans ma Feuille d'export, que je souhaite autoriser pour récupérer mes différentes données.


                En espérant que mes explications ne sont pas trop décousu.


                Bonne journée.



                • Partager sur Facebook
                • Partager sur Twitter
                  19 juillet 2023 à 13:36:07

                  Wolfy81100 a écrit:

                  Bonjour,

                  A aujourd'hui, le seul script que j'ai trouvé est celui-ci:

                  function addImportrangePermission() {
                    // id of the spreadsheet to add permission to import
                    const ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
                  
                    // donor or source spreadsheet id, you should get it somewhere
                    const donorId = '1GrELZHlEKu_QbBVqv...';
                  
                    // adding permission by fetching this url
                    const url = `https://docs.google.com/spreadsheets/d/${ssId}/externaldata/addimportrangepermissions?donorDocId=${donorId}`;
                  
                    const token = ScriptApp.getOAuthToken();
                  
                    const params = {
                      method: 'post',
                      headers: {
                        Authorization: 'Bearer ' + token,
                      },
                      muteHttpExceptions: true
                    };
                    
                    UrlFetchApp.fetch(url, params);
                  }

                  Cependant, je n'y trouve pas encore d'intérêt, car il faut y enregistrer l'id manuellement dans la ligne:

                  const donorId = '1GrELZHlEKu_QbBVqv...';

                  J'ai essayé pas mal de manipulation en me disant, que si j'arrive à récupérer l'id de mon IMPORTRANGE et que j'arrive à définir que mon id ce trouve dans la cellule associé, alors je pourrais éventuellement bouclé dessus et arrivée à autoriser en masse.

                  Cependant mon niveau de compréhension du code ne me le permet pas, je partage cependant avec vous mon avancé si jamais quelqu'un à des idées.

                  Pour l'extraction de l'id, voila comment je procède:

                  Une feuille Google Sheet avec 3 colonnes

                  Colonne 1: =IMPORTRANGE(B1;"'Nom de ma Feuille d'export'!$A$1:$A")

                  Colonne 2: Lien de la feuille de type (https://docs.google.com/spreadsheets/d/...)

                  Colonne 3: utilisation de la fonction suivante =STXT(B1;TROUVE("d/";B1)+2;TROUVE("/edit";B1)-TROUVE("d/";B1)-2)

                  Cette troisième colonne me permet d'extraire l'id contenue dans ma Feuille d'export, que je souhaite autoriser pour récupérer mes différentes données.


                  En espérant que mes explications ne sont pas trop décousu.


                  Bonne journée.



                  Bonjour,

                  function addImportrangePermission() {
                    var ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
                    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('LOGBOOK OPEN');
                    // Récupère les valeurs dans la plage D6 à D20
                    var range = sheet.getRange('D6:D20');
                    var values = range.getValues();

                    var token = ScriptApp.getOAuthToken();
                    var params = {
                      method: 'post',
                      headers: {
                        Authorization: 'Bearer ' + token,
                      },
                      muteHttpExceptions: true
                    };

                    // Parcourt toutes les valeurs récupérées
                    for(var i = 0; i < values.length; i++) {
                      // Récupère l'URL de la feuille à partir de la cellule
                      var url = values[i][0];
                      // Si la cellule n'est pas vide
                      if (url) {
                        // Extrait l'ID de la feuille de l'URL
                        var match = url.match(/\/d\/(.+?)\/edit/);
                        if (match) {
                          var donorId = match[1];
                          // Ajoute l'autorisation en accédant à cette URL
                          var url = `https://docs.google.com/spreadsheets/d/${ssId}/externaldata/addimportrangepermissions?donorDocId=${donorId}`;

                          UrlFetchApp.fetch(url, params);
                        }
                      }
                    }
                  }

                  ce script fonctionne, vous pouvez ensuite ajouter une condition if pour récupérer les URL d'une feuille puis extraire les ID. Dans mon script j'ai besoin des autorisations dans une certaines plages car il y a des nouveaux fichiers tous les jours dans cette plage c'est pour cela que j'ai mis D6:D20 mais cela est modulable.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 août 2023 à 15:52:56

                    MathisC8

                    Merci pour ton partage, mais je n'arrive pas à faire fonctionner ton code.

                    Si je comprend bien, dans ton code,  si je veux autoriser les liens que j'ai, je dois juste mettre la plage de la colonne contenant les liens dans la partie de ton code 

                      // Récupère les valeurs dans la plage D6 à D20
                      var range = sheet.getRange('D6:D20');

                    C'est bien ça?

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Google Sheet Fonction Importrange Autorisation

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown