Fonction IMPORTRANGE - identification des dossiers destination

Bonjour à tous.

Je souhaiterais pouvoir identifier tous mes fichiers qui contiennent une fonction IMPORTRANGE d'un même fichier.

Je m'explique: J'ai un fichier Google Sheet "LAMDA" contenant 15 feuilles (fichier source).

J'ai 10 fichiers (fichiers destination) contenant chacun une fonction IMPORTRANGE d'une feuille du fichier "LAMDA"

Je voudrais à partir du fichier "LAMDA" identifier (avoir leur nom ou leur URL) les 10 fichiers destination.

Je ne sais pas si c'est possible.

Merci de votre aide

Bonjour,

J'ai une solution, mais avec script, ce qui n'est pas l’idéal, si quelqu'un a une autre idée avec formule ?

Sinon, peux tu copier ta formule lambda ici ?

Voici un exemple de formule IMPORTRANGE contenue dans l'un des fichiers destination:

=IMPORTRANGE("https://docs.google.com/spreadsheets/d/1jHohf-rKNmc8yLSNDcTsB754y4SxZtN1fkkqenKiNBI";"IDCM3!A1:Q")

Bonjour,

J'ai pu adapter un de mes scripts :

1 - il itère sur toutes les feuilles et récupères toutes les formules importRange

2 - il récupère toutes les ID des fichiers contenus dans les importRange

3 - il récupère dans le drive les noms de fichier correspondants

function extraitNomsImportrange() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = ss.getSheets();
  var ids = []; // liste des ID
  var filesNames = []; // liste des noms de fichiers

// cet element itère sur toutes les feuilles, toutes les données pour isoler les IMPORTRANGE, puis à l'aide de regex isole les IDs 
  allSheets.forEach(sheet => {
    const data = sheet.getDataRange().getFormulas();
    data.forEach(row => {
      row.forEach(formula => {
        if (formula && formula.toUpperCase().includes("IMPORTRANGE")) {
          const match = formula.match(/IMPORTRANGE\(["']([^'";]+)["']/i);
          if (match && match[1]) {
            const rawURL = match[1].replace(/['"]/g, "");
            const idMatch = rawURL.match(/[-\w]{25,}/);
            if (idMatch && idMatch[0]) {
              ids.push(idMatch[0]);}}}});});});

// à partir des ids, teste de récuperer le nom du fichier dans le drive
  ids.forEach(function(result) {
    try{
    var file = DriveApp.getFileById(result);
    filesNames.push(file.getName())
    }catch(e){
      filesNames.push("fichier inconnu")}})

Logger.log(filesNames)
}

Dans ce script il ne fait que log les noms des fichier, mais si tu veux l’insérer quelque part tu peux ajouter :

  const sheetDestination = ss.getSheetByName('Feuille 3');
  var data = filesNames.map(name => [name]);
  sheetDestination.getRange(1,1,filesNames.length,1).setValues(data);

(dans cette exemple j’insère dans la colonne A de la feuille 3)

Bonjour

Merci pour ce travail

Malheureusement ça n'a pas fonctionné. Il faut dire que mes compétences sont très limitées. Je me suis contenté de faire un copier/coller du script. Il n'y a pas eu de message d'erreur. J'ai donné les autorisations DRIVE mais je ne vois rien apparaître dans la feuille 2 de mon fichier :(

Voici le script:

image

Je ne sais pas ce que je dois faire

Bonjour,

Dans un premier temps, supprime les lignes 30,31,32 puis exécute le script, que se passe-t-il dans la console en bas ?

Bonjour

Lignes 30;31;32 supprimées.

Le script semble s' exécuter normalement mais toujours rien dans la feuille 2 de mon fichier:

image

As tu toujours la ligne "Logger.log..." ligne 29 ?

Oui

désolé la copie écran n'était pas complète

image

La ligne Logger.log est censé affiché le résultat s'il affiche rien c'est que quelque part un élément bloque, premièrement, pourquoi y a t'il 2 fonctions :

screenshot 2024 04 26 08 33 19

Bonjour

j'ai supprimer la ligne 1

Ca va mieux. Le script s'exécute sans erreur mais je n'ai toujours pas de liste affichée

image

Bonjour,

J'ai testé de mon coté, ça fonctionne bien... Peux tu partager ton fichier ?

Bonjour

pour des raisons de confidentialité des données, je souhaiterais:

  • ne partager qu'avec 1 seule personne
  • être rassuré sur le fait que les accès à mon Drive ne seront pas possibles au moyen des ID (les fichiers correspondants) ne sont partagés qu'avec un nombre limité de personnes

Merci

Rechercher des sujets similaires à "fonction importrange identification dossiers destination"