AppScript > Copier coller le dernier fichier docs d'un dossier

Bonjour,

Voici mon programme ci-joint.

J'aimerai le modifier afin que ce dernier copie colle le dernier fichier docs du dossier par exemple :

Je saisie un nom dans mon Sheet : Quentin

Un dossier est créé dans le dossier parent.

Le programme copie une template pour la coller dans ce dossier.

Je modifie ce fichier...

Je réécris Quentin dans mon sheet et là j'aimerai que mon programme copie ce dernier fichier modifié et non la template...

Pouvez-vous m'aider ?

Merci infiniment.

function onFormSubmit(e) {
  var feuille = e.range.getSheet();
  var range = e.range;

  // Vérifier si la ligne modifiée n'est pas la première ligne
  if (range.getRow() > 1) {
    // Récupérer les données de la ligne nouvellement ajoutée
    var data = feuille.getRange(range.getRow(), 1, 1, 5).getValues()[0];

    // Ajouter la date du jour dans la colonne D
    var dateDuJour = new Date(); // Obtenir la date actuelle
    feuille.getRange(range.getRow(), 4).setValue(dateDuJour); // Insérer la date dans la colonne D

    // Nom du dossier à créer ou rechercher (utiliser le nom de la colonne C comme nom de dossier)
    var nomDossier = data[2]; // Colonne C
    // Nom du fichier à créer (utiliser la valeur de la colonne E comme nom de fichier)
    var nomFichier = data[4]; // Colonne E

    // Récupérer le dossier parent du fichier Google Sheets
    var fichier = DriveApp.getFileById(feuille.getParent().getId());
    var dossierParent = fichier.getParents().next();

    // Vérifier si le dossier existe déjà, sinon le créer
    var dossier;
    var dossiers = dossierParent.getFoldersByName(nomDossier);

    if (dossiers.hasNext()) {
      dossier = dossiers.next();
    } else {
      dossier = dossierParent.createFolder(nomDossier);
    }

    // Rechercher tous les fichiers dans le dossier avec le nom spécifié
    var fichiers = dossier.getFilesByName(nomFichier);
    var dernierDocument = null;

    // Parcourir tous les fichiers avec le même nom dans le dossier
    while (fichiers.hasNext()) {
      var fichier = fichiers.next();
      // Vérifier si aucun document n'est encore sélectionné ou si ce document est plus récent que le précédent sélectionné
      if (!dernierDocument || fichier.getLastUpdated() > dernierDocument.getLastUpdated()) {
        dernierDocument = fichier;
      }
    }

    // Si un document a été trouvé dans le dossier avec le même nom
    if (dernierDocument) {
      // Créer une copie du dernier document trouvé dans le même dossier
      var newDoc = dernierDocument.makeCopy(nomFichier, dossier);
      var newDocId = newDoc.getId();

      // Ouvrir le nouveau document
      var doc = DocumentApp.openById(newDocId);
      var body = doc.getBody();

      // Remplacer les mots-clés dans le document avec les données de la ligne sélectionnée
      body.replaceText('{ID Quote}', data[0]); // Remplacez {ID Quote} par le mot-clé dans votre document pour la colonne A
      body.replaceText('{ID Client}', data[1]); // Remplacez {ID Client} par le mot-clé dans votre document pour la colonne B
      body.replaceText('{NAME}', data[2]); // Remplacez {NAME} par le mot-clé dans votre document pour la colonne C

      // Obtenir le nom du nouveau document sans espaces pour le lien hypertexte
      var nouveauDocNomSansEspaces = nomFichier.replace(/\s+/g, '_');

      // Insérer un lien hypertexte vers le nouveau document dans la colonne E avec le nom du document comme texte du lien
      feuille.getRange(range.getRow(), 5).setFormula('=HYPERLINK("' + doc.getUrl() + '"; "' + nouveauDocNomSansEspaces + '")');
    } else {
      // Si aucun document avec le même nom n'est trouvé dans le dossier, créer une copie du modèle Google Docs
      // ID du modèle Google Docs (à remplacer par votre modèle)
      var templateId = '1p9n_2YByekLzAl7qPOcSvIviAFAaU4eAxohMpgl_wAs'; // ID de votre modèle

      // Obtenir le modèle Google Docs
      var templateFile = DriveApp.getFileById(templateId);

      // Créer une copie du modèle Google Docs dans le dossier spécifié avec le nom du fichier
      var newDoc = templateFile.makeCopy(nomFichier, dossier);
      var newDocId = newDoc.getId();

      // Ouvrir le nouveau document
      var doc = DocumentApp.openById(newDocId);
      var body = doc.getBody();

      // Remplacer les mots-clés dans le document avec les données de la ligne sélectionnée
      body.replaceText('{ID Quote}', data[0]); // Remplacez {ID Quote} par le mot-clé dans votre document pour la colonne A
      body.replaceText('{ID Client}', data[1]); // Remplacez {ID Client} par le mot-clé dans votre document pour la colonne B
      body.replaceText('{NAME}', data[2]); // Remplacez {NAME} par le mot-clé dans votre document pour la colonne C

      // Obtenir le nom du nouveau document sans espaces pour le lien hypertexte
      var nouveauDocNomSansEspaces = nomFichier.replace(/\s+/g, '_');

      // Insérer un lien hypertexte vers le nouveau document dans la colonne E avec le nom du document comme texte du lien
      feuille.getRange(range.getRow(), 5).setFormula('=HYPERLINK("' + doc.getUrl() + '"; "' + nouveauDocNomSansEspaces + '")');
    }
  }
}

Bonjour,

J'ai lu ton script en diagonal, il semble répondre à ton besoin non ? Ajoute des tests pour suivre le déroulé et voir si la logique suit bien celle que tu souhaites

Rechercher des sujets similaires à "appscript copier coller dernier fichier docs dossier"