Comment déclencher un webhook sur Make dès qu'un fichier est ajouté dans un dossier Google Drive

En utilisant un script Google Apps Script, tu peux vérifier à intervalle régulier si de nouveaux fichiers ont été ajoutés dans un de tes dossiers Google Drive.
Le script déclenche alors automatiquement un webhook sur Make, qui peut lancer ton scénario.
Fini le gaspillage d’opérations avec des vérifications programmées !

Pourquoi utiliser cette astuce ?

L’application Google Drive sur Make ne te propose pas de déclencheur instantané lors de l’ajout de fichiers.
Tu dois donc soit :

Planifier ton scénario toutes les X minutes ou X heures

  • Si tu paramètres ton trigger pour qu’il se déclenche très fréquemment, tu bénéficieras d’une actualisation rapide, mais tu gaspilleras du même coup de nombreuses vérifications inutiles, faisant grimper en flèche ton nombre d’opérations mensuelles.
  • Si tu paramètres ton trigger pour qu’il se déclenche peu fréquemment, tu as alors une automatisation beaucoup moins gourmande en opérations mais également beaucoup moins réactive.

Trouver une autre solution pour le déclencher à la demande

L’astuce que je vais te présenter ici résout ce problème en utilisant un script Google Apps pour vérifier régulièrement un de tes dossiers Google Drive.
Dès qu’un nouveau fichier est détecté, le script appelle un webhook Make qui peut alors lancer ton scénario.

Comment mettre en place cette solution ?

Étape 1 : Crée le webhook dans Make

  1. Crée un nouveau scénario Make
  2. Ajoute un module Webhook en premier et récupère son URL

Étape 2 : Crée le script

  1. Va sur script.google.com et crée un nouveau projet
  2. Colle ce code en remplaçant ‘myFolderID’ par l’ID de ton dossier Drive et ‘https://mysample.webhook.com/’ par l’URL de ton webhook Make :
// Remplace 'myFolderID' avec l'ID du dossier Google Drive à surveiller et 'https://mysample.webhook.com' par l'URL de ton Custom Webhook
const folderId = 'myFolderID';
const webhookUrl = 'https://mysample.webhook.com';

const cache = CacheService.getScriptCache();

function isRecentlyCreated(file) {
  const now = new Date();
  const threshold = 60 * 1000; // Vérifie les fichiers créés dans la dernière minute
  return now - file.getLastUpdated() < threshold;  
}

function checkForNewFiles() {
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  let newFilesFound = false;
  
  while (files.hasNext()) {
    const file = files.next();
    const fileId = file.getId();
    
    // Vérifie dans le cache si le fichier a déjà été traité 
    if (!cache.get(fileId)) {
      if (isRecentlyCreated(file)) {
        const payload = { fileId };
        UrlFetchApp.fetch(webhookUrl, {
          method: 'post',
          contentType: 'application/json',
          payload: JSON.stringify(payload)
        });
        cache.put(fileId, 'processed', 60 * 60); // Garder en cache 1h
        console.log(`Nouveau fichier trouvé : ${fileId}`);
        newFilesFound = true;
      }
    } else {
      console.log(`Fichier ${fileId} déjà traité`);
    }
  }
  
  if (!newFilesFound) {
    console.log('Aucun nouveau fichier trouvé');
  }
}

function startMonitoring() {
  // Planifier une vérification périodique des nouveaux fichiers (ex: chaque minute)
  ScriptApp.newTrigger('checkForNewFiles') 
    .timeBased()
    .everyMinutes(1)
    .create();
}

function main() {
  startMonitoring();  
}

Pour trouver l’ID de ton dossier Drive il te suffit d’accéder au dossier dans ton navigateur et de récupérer la dernière partie de l’URL, comme ceci :
https://drive.google.com/drive/u/0/folders/**YourFolderIdIsThisPart**

  1. Dans la section “Services” du panneau de gauche, ajoute l’API Google Drive

Étape 3 : Autorise et teste le script

  1. Sélectionne la fonction “main” dans le menu en haut et clique sur “Exécuter”
  2. Autorise le script à accéder à ton Drive avec tes identifiants
  3. Clique à nouveau sur “Exécuter” pour créer le déclencheur

Vérifie que le déclencheur est bien créé dans la section “Déclencheurs”. Tu peux aussi consulter l’historique d’exécution dans “Exécutions”.

Et voilà ! Dès qu’un fichier sera ajouté ou modifié dans ton dossier Drive, le script appellera le webhook Make avec l’ID du fichier en payload.
Tu peux alors utiliser cet ID dans les modules suivants de ton scénario, par exemple pour télécharger le fichier avec “Download File”.

#Conclusion : Cette astuce combine intelligemment un script Google Apps et un webhook Make pour surveiller efficacement les ajouts de fichiers dans ton Google Drive. Tu peux adapter la fréquence de vérification dans le script selon tes besoins. Une solution élégante pour automatiser tes workflows sans gaspiller d’opérations !

Ceci est une traduction et adaptation française de la solution trouvée par @hugoassuncao, merci à lui !

1 Like

Hey there @PhosphoreGarden :wave:

This scenario looks great, thanks for sharing it!

I just wanted to inform you that the only language of our community is English. Would you please translate your post so everybody can read what you accomplished? :pray:

Thanks a lot

2 Likes