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
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 !!!
la je comprend pas du tous !!!
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 !!)
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, ...
