, ,

Simplifiez la gestion de votre Google Drive : le scanner de fichiers pour Google Sheets

Vous travaillez régulièrement sur Google Workspace et votre Google Drive est une véritable mine d’or d’informations ? Si vous avez déjà ressenti le besoin d’avoir un inventaire clair et structuré de tous les fichiers et dossiers à l’intérieur d’un projet, cette astuce est faite pour vous !

Aujourd’hui, nous allons vous montrer comment transformer une simple feuille Google Sheets en un puissant scanner de Google Drive grâce à quelques lignes de Google Apps Script (le langage de script intégré de Google Workspace).

Ce script que nous avons développé va créer une liste complète de tous les fichiers et sous-dossiers d’un répertoire donné, directement dans votre Google Sheet, avec leurs liens d’accès. Fini la navigation fastidieuse !

Pourquoi un inventaire de Drive dans Google Sheets ?

Avoir une liste de fichiers structurée dans Google Sheets offre plusieurs avantages :

  • Audit et organisation : Identifiez rapidement la structure d’un dossier de projet et repérez les doublons ou les fichiers mal classés.
  • Partage facilité : Partagez la feuille de calcul avec vos collaborateurs pour leur donner un aperçu clair du contenu du Drive, avec des liens directs.
  • Recherche avancée : Utilisez les puissantes fonctions de filtrage et de recherche de Google Sheets pour trouver instantanément un fichier spécifique dans un grand ensemble.
  • Documentation : Créez une archive consultable de l’état d’un dossier à un moment donné.

Le code : La magie de Google Apps Script

Pour intégrer cette fonctionnalité, vous devez copier le code suivant dans l’Éditeur de script (accessible via le menu Extensions > Apps Script) de la Google Sheet que vous souhaitez utiliser comme « scanner ».

JavaScript

/**
 * @OnlyCurrentDoc
 * Ce script est conçu pour être utilisé uniquement avec le document Google Sheet actuel.
 */

/**
 * Crée un menu personnalisé dans l'interface utilisateur de Google Sheets
 * lors de l'ouverture du fichier.
 */
function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Gestion des fichiers')
      .addItem('Lister les Fichiers du Drive', 'listFilesAndFolders')
      .addToUi();
}

/**
 * Fonction principale pour lister les fichiers et dossiers.
 * Elle identifie le dossier parent du Google Sheet et lance le processus de scan.
 */
function listFilesAndFolders() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  
  // Efface le contenu précédent et prépare les en-têtes
  sheet.clear();
  sheet.appendRow(['Nom', 'Type', 'Lien']);
  sheet.getRange("A1:C1").setFontWeight("bold");

  // Récupère le fichier Google Sheet actuel dans le Drive
  const parentFile = DriveApp.getFileById(ss.getId());
  
  // Récupère le dossier contenant le Google Sheet
  const parentFolder = parentFile.getParents().next();
  
  // Affiche une notification pour informer l'utilisateur
  SpreadsheetApp.getUi().alert(`Scan du dossier "${parentFolder.getName()}" en cours...`);
  
  // Lance la fonction récursive pour lister les fichiers
  scanFolder(parentFolder, sheet, "");
  
  SpreadsheetApp.getUi().alert('La liste des fichiers a été générée avec succès.');
}

/**
 * Fonction récursive qui scanne un dossier et ses sous-dossiers.
 * @param {Folder} folder - Le dossier à scanner.
 * @param {Sheet} sheet - La feuille où écrire les résultats.
 * @param {string} prefix - Le préfixe à utiliser pour l'indentation (visuel).
 */
function scanFolder(folder, sheet, prefix) {
  // Ajoute le dossier actuel à la liste
  sheet.appendRow([prefix + folder.getName(), 'Dossier', folder.getUrl()]);
  
  // Liste les sous-dossiers
  const subFolders = folder.getFolders();
  while (subFolders.hasNext()) {
    const subFolder = subFolders.next();
    // Appel récursif pour chaque sous-dossier
    scanFolder(subFolder, sheet, prefix + "  > ");
  }
  
  // Liste les fichiers dans le dossier actuel
  const files = folder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    sheet.appendRow([prefix + "  - " + file.getName(), 'Fichier', file.getUrl()]);
  }
}

Comment ça fonctionne ? La clé est la récursivité

Le secret de ce script réside dans la fonction scanFolder, qui est récursive. Cela signifie qu’elle s’appelle elle-même :

  1. Elle commence par lister les fichiers et dossiers du répertoire actuel.
  2. Pour chaque sous-dossier qu’elle trouve, elle s’appelle à nouveau pour ce sous-dossier.
  3. Ce processus se répète jusqu’à ce que tous les niveaux de sous-dossiers aient été explorés.

La fonction principale, listFilesAndFolders, est ingénieuse : elle identifie automatiquement le dossier parent de la Google Sheet en cours et lance le scan à partir de là. Assurez-vous simplement que votre feuille de calcul est bien placée à la racine du dossier que vous souhaitez analyser.

💡 Le saviez-vous ? La fonction onOpen() est un « déclencheur simple » (simple trigger) de Google Apps Script. Elle s’exécute automatiquement chaque fois que quelqu’un ouvre le document, assurant que votre menu personnalisé est toujours disponible.


Le guide de l’utilisateur : lancez le scan en 3 clics

Une fois le code sauvegardé dans votre éditeur de script, l’utilisation est ultra-simple :

  1. Rechargez votre Google Sheet (ou ouvrez-la si elle était fermée).
  2. Un nouveau menu appelé « Gestion des fichiers » apparaît dans la barre d’outils.
  3. Cliquez sur Gestion des fichiers > Lister les Fichiers du Drive.

La première fois, vous devrez autoriser le script à accéder à votre Google Drive. Après cela, le script s’exécutera. Vous verrez une notification de début, puis le tableau se remplira. Les dossiers seront listés en premier, suivis par les fichiers, avec une indentation claire (> pour les sous-dossiers, - pour les fichiers) pour visualiser la structure de votre Drive !

N’attendez plus pour mettre de l’ordre dans votre Google Drive !


Avez-vous essayé ce script ? Laissez-nous un commentaire ci-dessous pour nous dire comment vous l’avez adapté à vos besoins de gestion de projet !