Copier des fichiers d'un Drive Partagé à partir d'une liste d'URLs GSheet

Bonjour,

J'ai un GSheet avec, en colonne A1, une liste d'URL de fichiers situés dans un Drive Partagé (dont je suis admin).

Existe-t-il un script pour créer une copie de chacun de ces fichiers dans un dossier spécifique de mon Drive perso à partir de ce GSheet ?

Merci pour votre aide et bonne journée

Bonjour,

Oui c'est tout a fait possible, voici un morceau de script, à adapter et tester

function archivageUrl(){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
let listeUrl = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues();
let dossierDriveCible = DriveApp.getFolderById("ID_DU_DOSSIER_DE_DESTINATION");  
// Si nécessaire, triez, filtrez pour ne garder que les URL valides

for (i=listeUrl.length-1;i>=0;i--) {
  let urlAStocker = listeUrl[i][0];
  let fichierSheet = SpreadsheetApp.openByUrl(urlAStocker);
  let nomFichier = fichierSheet.getName(); // il est possible d'écrire "copie", la date de copie ou autre donnée si besoin
  fichierSheet.copy(nomFichier, dossierDriveCible);
}}

Bonjour,

Merci pour ce code.

Pourriez-vous m'expliquer à quoi sert la variable "urlAStocker" svp ?

Je vous tiens au courant du résultats de mes tests.

Bonne fin de journée

Toutes les données contenues en colonne A sont stockées dans "listeUrl"

Une itération for itère sur chaque donnée et la stocke dans "urlAStocker" pour ensuite procéder à l'archivage (mettre le fichier dans une variable, son nom, créer la copie).

Re-bonjour,

J'ai ajouté l'ID du dossier cible à l'emplacement prévu.

Ma liste d'URLs est bien en colonne A

Mais j'obtiens un message d'erreur dans le journal d'exécution pour la toute dernière ligne de code : Exception: The parameters (String,DriveApp.Folder) don't match the method signature for SpreadsheetApp.Spreadsheet.copy.

Je ne suis pas assez douée avec Apps Script pour trouver le problème.

Merci et bonne fin de journée

Bonjour,

En effet ça ne fonctionne pas, j'ai fais le test, voici un script fonctionnel :

function archivageUrl(){
let ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getActiveSheet();
let listeUrl = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues();
let dossierDriveCible = DriveApp.getFolderById("129U1z8WatRTT4ai2OLBRXPCX6Pb8mTNv");  
listeUrl = listeUrl.flat().filter(function (url) { return url !== ""; });
for (i=listeUrl.length-1;i>=0;i--) {
  let fichier = DriveApp.getFileById(urlToId(listeUrl[i]));
  fichier.makeCopy(fichier.getName(),dossierDriveCible);
}}

function urlToId(url) {
  var id = null;
  var regex = /\/d\/([a-zA-Z0-9_-]+)(\/|$)/;
  var match = url.match(regex);
  if (match && match[1]) {
    id = match[1];
  }
  return id;
}

Attention toutefois, il n'y a pas de tests qui vérifient si les URL sont valides.

Bonjour,

Merci 1000 fois pour votre aide.

Ce script fonctionne comme souhaité

Bonne journée

Rechercher des sujets similaires à "copier fichiers drive partage partir liste urls gsheet"