EXTRAIRE un id d'un fichier du drive

bonjour

j 'essaye de développer un script qui me permet de trouver dans le drive un fichier dont le nom contient AR ou ARC

function mettreAJourLienAR() {
  console.log("LANCEMENT mettre a jour lien AR ")
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var dataRange = spreadsheet.getRange("S5:s"); 
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var lienDossier = row; // Colonne S (index 7 dans la plage de données)
    console.log("lien du dossier est " + lienDossier)

    var lienAR = trouverLienARDansDossier(lienDossier);

    if (lienAR) {
      spreadsheet.getRange(i + 5, 11).setValue(lienAR); // Mettre à jour la colonne K (index 11)
    }
  }
}

function trouverLienARDansDossier(lienDossier) {
    console.log("LANCEMENT TROUVER LIEN DANS DOSSIER ")
  var dossier = DriveApp.getFolderById(extraireIdDossier(lienDossier));
  var fichiers = dossier.getFiles(); // Récupérer tous les fichiers du dossier

  while (fichiers.hasNext()) {
    var fichier = fichiers.next();
    var nomFichier = fichier.getName();

    // Vérifier si le nom du fichier inclut "AR " ou "ARC"
    if (nomFichier.includes("AR ") || nomFichier.includes("ARC")) {
      return fichier.getUrl(); 
    }
  }

  return null; // Aucun fichier correspondant trouvé
}

function extraireIdDossier(lienDossier) {
   console.log("lancement de extraire ID dossier")
var length = lienDossier.length;
var idDebut = lienDossier.indexOf("/folders/")+9

  if (idDebut > 8 && length > idDebut)
  console.log("id du dossier est "+ lienDossier.string.substring(idDebut, length));

  var iddossier = lienDossier.string.substring(idDebut, length)

    return iddossier; 

}

il semble que j 'ai un probleme avec string.substring

pourtant j 'ai extrait juste le code de la fonction Extraire ID dossier

ayant simplifié le code j 'extrait bien l ID du dossier

mais lorsque je lance j 'ai une erreur !!

bref je ne trouve pas ma solution

quelqu 'un a t 'il une piste ??

en faite si je fais le code suivant

function extraireIdDossier(lienDossier) {
   console.log("lancement de extraire ID dossier")
   console.log(lienDossier)

     //var spreadsheet = SpreadsheetApp.getActiveSheet();
     //var lienDossier = spreadsheet.getRange("S5").getValue(); 
     //console.log(lienDossier)

var length = lienDossier.length;
console.log(length)
var idDebut = lienDossier.indexOf("/folders/")+9
console.log(idDebut)

  if (idDebut > 8 && length > idDebut)

  var iddossier = lienDossier.substring(idDebut, length)
  console.log("id du dossier est "+ iddossier);

    return iddossier; 

}

j 'ai ce résultat

image

par contre si je fais ce code la

function extraireIdDossier(lienDossier) {
   console.log("lancement de extraire ID dossier")
   //console.log(lienDossier)

     var spreadsheet = SpreadsheetApp.getActiveSheet();
     var lienDossier = spreadsheet.getRange("S5").getValue(); 
     console.log(lienDossier)

var length = lienDossier.length;
console.log(length)
var idDebut = lienDossier.indexOf("/folders/")+9
console.log(idDebut)

  if (idDebut > 8 && length > idDebut)

  var iddossier = lienDossier.substring(idDebut, length)
  console.log("id du dossier est "+ iddossier);

    return iddossier; 

}

et bien j ai mon résultat !! et ca marche bien !!!

image

la je comprend pas du tous !!!

Salut,

A partir d'une url, pour avoir l'id :

image

Voici le script copiable :

function urlToId() {
  const url = "https://drive.google.com/drive/folders/15GMa6h1SX8cPudWo8g_6eeAHHbfHaWRR";
  const id = DriveApp.getFolderById(url.split('/').pop()).getId();
  Logger.log(id);
}

Merci pierre

ca pourrait marcher dans ce sens si j 'avais extrait L 'url dans mon code

mais la je récupère l ' URL d 'une cellule donc c 'est un STING je ne ne m 'abuse !!!

bref j 'ai vite fais tenté la manipe et je me retrouve avec l' erreur !! il me semble bien que mon raisonnement est bon n ' est il pas ??? ( je m 'améliore !!)

image

Ton soucis est que l'id est mis dans une liste ? [ ' ... ' ] Si oui, il te suffit d'ajouter .flat() à la fin de ta ligne.

PS : en GAS, voici les différents types de data :

string (texte) const txt = 'blabla'; // du texte

const txt2 = '14885'; // le nombre étant entre ' ' c'est aussi du texte.

number (nombre) const nb = 14452;

const nb2 = 41.45;

booleen (true/fasle) const bool = true;

const bool2 = false;

Ensuite, il y a les structures de données : liste, object, ...

Rechercher des sujets similaires à "extraire fichier drive"