Numeriblog Google Workspace Google Drive, votre espace de stockage partagé Google Drive : comment transférer la propriété de fichiers entre des domaines différents et sans perdre les URLs ? 2/2

Google Drive : comment transférer la propriété de fichiers entre des domaines différents et sans perdre les URLs ? 2/2

J’exposais dans un précédent article différentes méthodes pour transférer la propriété de plusieurs dossiers d’un compte gmail.com à un compte Workspace. J’en étais arrivé à la solution du déplacement du contenu vers un Drive partagé, […]

personnes ont consulté cet article

2 minutes

Rédigé par Antoine MARTIN - il y a 2 ans

Ce que vous allez découvrir

  • Script pour déplacer un dossier d'un compte gmail.com vers un Drive partagé d'un compte Workspace

Google Drive : comment transférer la propriété de fichiers entre des domaines différents et sans perdre les URLs ? 2/2

J’exposais dans un précédent article différentes méthodes pour transférer la propriété de plusieurs dossiers d’un compte gmail.com à un compte Workspace. J’en étais arrivé à la solution du déplacement du contenu vers un Drive partagé, qui fonctionne pour les fichiers mais pas pour les dossiers, ce qui oblige à recréer l’arborescence manuellement. Voici à présent le script qui m’a permis d’automatiser cette tâche.

Script pour déplacer un dossier d’un compte gmail.com vers un Drive partagé d’un compte Workspace

préparation

  • Créez depuis le compte cible un Drive partagé.
  • Nommez le compte gmail.com source comme membre administrateur de contenus.
  • Récupérez l’ID du dossier source et celui du dossier Cible.
  • Créez un script depuis le compte source.
  • Collez le script ci-dessous, recopiez les ID dans la fonction launchMoveFiles.
  • Exécutez le script.

Attention, ce script déplace des fichiers d’un compte gmail.com vers un Drive partagé, la propriété des fichiers va être transférée et cette action n’est pas annulable. Numericoach décline toute responsabilité sur les conséquences de l’utilisation de ce script.

Conseils :

  • Créez un dossier test, avec des sous-dossiers et des fichiers.
  • Faites-vous accompagner : 1 heure de coaching pour transférer vos fichiers en toute sécurité.

script :

/*****
 *
 * @authour: antoine.martin@amcms.net
 * @owner: numericoach
 * @date: 2021
 *
 * tous droits reservés
 *
 ****/
 const userEmail = Session.getUser().getEmail();
function launchMoveFiles()
{
const folderSourceParentId = "COPIER_ICI_L_ID_DOSSIER_SOURCE";
const folderCibleParentId = "COPIER_ICI_L_ID_DOSSIER_CIBLE";
moveFiles(folderSourceParentId, folderCibleParentId);
}
function moveFiles(folderSourceParentId, folderCibleParentId) {
  // ACTIVER LES DOSSIERS
  const folderSourceParent = DriveApp.getFolderById(folderSourceParentId);
  const folderCibleParent = DriveApp.getFolderById(folderCibleParentId);
  // COPIER TOUS LES FICHIERS DU DOSSIER SOURCE DANS LE DOSSIER CIBLE
  const filesSource = folderSourceParent.getFiles();
  while (filesSource.hasNext()) {
    const thisFile = filesSource.next();
    let ownerName = "";
      if (thisFile.getOwner() != "null") {
        ownerName = thisFile.getOwner().getEmail();
      }
     if (ownerName == userEmail ) {
          thisFile.moveTo(folderCibleParent);
      }
  }
  // LISTER LES DOSSIERS DU DOSSIER SOURCE
  const foldersSource = folderSourceParent.getFolders();
  while (foldersSource.hasNext()) {
    const thisFolderSource = foldersSource.next();
    const thisFolderSourceName = thisFolderSource.getName();
    const thisFolderSourceId = thisFolderSource.getId();
    const thisFoldersCible = folderCibleParent.getFoldersByName(thisFolderSourceName);
    let thisFolderCibleId = "";
    if (thisFoldersCible.hasNext()) {
      // si un dossier enfant du dossier cible portant le même nom existe : récupérer l'ID
      thisFolderCibleId = thisFoldersCible.next().getId();
      Logger.log("Le dossier " + thisFolderSourceName + " existe déjà");
    }
    else {
      // si aucun dossier enfant du dossier cible de porte le même nom : créer et nommer un dossier comme dans source
      thisFolderCibleId = folderCibleParent.createFolder(thisFolderSourceName).getId();
      Logger.log("Le dossier " + thisFolderSourceName + " est créé.");
    }
    // Répéter la fonction dans les dossiers enfant source et cible
    moveFiles(thisFolderSourceId, thisFolderCibleId);
  }
}

La première fonction lance la boucle à partir des deux ID des dossiers racines.

La deuxième fonction :

  • Déplace les fichiers un à un du dossier source vers le dossier cible.
  • Liste chaque dossier « enfant » du dossier source, créé son clone dans le dossier cible s’il n’existe pas.
  • Rejoue la même fonction entre le dossier enfant source et le dossier enfant cible.

Merci pour vos retours sur l’utilisation de ce script. N’hésitez pas à nous contacter pour plus de précisions ou pour un accompagnement personnalisé en fonction de vos besoins.

Attention :

  1. Mise à jour du 4 juin 2021 : Après une tentative sur un très gros dossier, il est apparu indispensable de vérifier que le fichier appartienne bien au compte utilisateur pour avoir le droit de le déplacer dans un Drive partagé et ainsi transférer la propriété.
  2. Prendre en compte le délai d’exécution d’un script maximal de 6 minutes sur un compte gmail.com. N’hésitez pas à nous contacter pour déplacer des dossiers volumineux qui nécessiteraient plus de temps.

Besoin d'un peu plus d'aide sur Google Drive ?

Des formateurs sont disponibles toute l'année pour vous accompagner et optimiser votre utilisation de Google Drive, que ce soit pour votre entreprise ou pour vos besoins personnels !

Découvrir nos formations Google Drive

Rédacteur

Photo de profil de l'auteur
Antoine MARTIN

Consultant et formateur sur les outils bureautiques, j'ai intégré l'équipe de Numericoach en 2020. J'accompagne les utilisateurs de Google Workspace à trouver des solutions répondant à leurs besoins. Mes domaines de prédilections sont les outils Sheets, Docs, Slides et Google Apps Script.

S’abonner
Notification pour
guest
3 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires
Emmanuel
Emmanuel

Avez-vous testé le comportement des « fichiers multi-emplacements » (shift+Z, j’imagine non préservés) vs « Drive shortcuts » (j’imagine préservés)?

Cet avis vous a été utile ?

Antoine MARTIN
Répondre à  Emmanuel
1 année il y a

Bonjour, Emmanuel. pour l’instant le script a fait ses preuves uniquement sur les fichiers présents dans les dossiers. Il n’y avait pas de raccourcis. Mais si vous testez vous pourrez nous dire si ça fonctionne ?
Bonne journée

Cet avis vous a été utile ?

Patrick Tellier

Super ! Merci Antoine c’est vraiment une fonction manquante en Natif sur Google Drive.
P.S. : Les raccourcis sont également bien déplacés.

Cet avis vous a été utile ?