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é, […]

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 :
- 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é.
- 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- Tutos connexes
- Plus de l'auteur
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 ?
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 ?
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 ?