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 + '")');
}
}
}
P
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