Skip to content

Instantly share code, notes, and snippets.

@Guts
Last active January 4, 2016 12:09
Show Gist options
  • Save Guts/8619998 to your computer and use it in GitHub Desktop.
Save Guts/8619998 to your computer and use it in GitHub Desktop.
Publispostage avec Google Form
// Julien Moura [email protected]
// Pour le géoséminaire : http://geoseminaire.teledetection.fr
// Méthodologie :
// 1- Créer un formulaire sur Google Drive
// 2- Créer un document modèle qui sera rempli par le script (template)
// 3- Ouvrir le tableau des réponses du formulaire
// 3- Aller dans l'éditeur de script (Menu Outils) et ouvrir un nouveau projet
// 4- Copier / coller le code ci-dessous et l'adapter au formulaire (ID du document template, prix, etc)
// 5- Renommer le nom du projet et code.gs
// 6- Ouvrir les déclencheurs et choisir : onFormSubmit - A partir de la feuille de calcul - Lors de l'envoi d'un formulaire
// 7- Afin d'être prévenu des éventuelles erreurs et pouvoir déboguer rapidement, indiquer une notification
// 8- Cliquer sur enregistrer et valider les autorisations de l'application
// Fonction quand le formulaire est soumis
function onFormSubmit(e) {
// Paramètres du template
var docTemplate = "7i8CocORikOyNQ7MDjY0uplab0uM"; // *** ID du doc-template ***
var docName = "Template_inscription";
// Affecter les informations du formulaires à des variables
// cf. l'ordre des colonnes du tableur des réponses
// les noms des colonnes ne doivent pas contenir de caractère spécial
var horodatage = e.values[0];
var first_name = e.values[1];
var full_name = e.values[2];
var institution = e.values[3];
var email_address = e.values[4];
var level = e.values[5];
var addr_number = e.values[6];
var addr_label = e.values[7];
var addr_postalcode = e.values[8];
var addr_city = e.values[9];
var addr_country = e.values[10];
var receipts = e.values[11];
// var receipts = "";
// var receipt_recu = e.values[12];
// var receipt_paiement = e.values[13];
// var receipt_presence = e.values[14];
var mode_paiement = e.values[12];
// variables supplémentaires
var receipts_tot = ""
var price = 40;
var msg_justificatifs = "";
var msg_attestations = "Vous avez souhaité recevoir des justificatifs : ";
// Créer une copie du template et garder son ID.
var copyId = DocsList.getFileById(docTemplate)
.makeCopy('Geoseminaire_FicheInscription_'+
full_name+'_'+
first_name)
.getId();
// réécriture de la variable du prix selon le statut choisi
if ((level=="Étudiant")||
(level=="En recherche d'emploi")||
(level=="Adhérent Silatitudes")) {
price = 15
msg_justificatifs = "Tarif réduit : pensez à joindre les "+
"justificatifs correspondants."
}
else {
price = 40
}
// écriture de la variable du pays seulement s'il ne s'agit pas de la France
if (addr_country.toUpperCase()=="FRANCE") {
addr_country = ""
}
// écriture de la variable du message des attestations seulement si l'utilisateur en a choisi au moins une
if (receipts=="") {
msg_attestations = "Vous n'avez souhaité recevoir aucun justificatif."
var receipts = "-"
}
else {
for (var i = 0; i < receipts.split(",").length; i++) {
var receipts_tot = receipts_tot + receipts.split(",")[i]+'\n'
}
}
// On ouvre le document temporaire
var copyDoc = DocumentApp.openById(copyId);
// On se place dans le corps du document
var copyBody = copyDoc.getActiveSection();
// On remplit le nouveau document avec les données du formulaire en
// remplaçant les champs "keyXyz" insérés dans le document-template
copyBody.replaceText('keyDate', horodatage.substring(0,10));
copyBody.replaceText('keyFirstName', first_name);
copyBody.replaceText('keySurName', full_name.toUpperCase());
copyBody.replaceText('keyOrganism', institution);
copyBody.replaceText('keyAddrNb', addr_number);
copyBody.replaceText('keyStreet', addr_label);
copyBody.replaceText('keyPostalCode', addr_postalcode);
copyBody.replaceText('keyCity', addr_city);
copyBody.replaceText('keyCountry', addr_country);
copyBody.replaceText('keyPrice', price);
copyBody.replaceText('keyPayment', mode_paiement);
copyBody.replaceText('keyLevel', level);
copyBody.replaceText('keyMsgJustifPrice', msg_justificatifs);
copyBody.replaceText('keyMsgAttest', msg_attestations);
copyBody.replaceText('keyReceipt_recu', receipts_tot);
// On sauvegarde et on ferme le document temporaire
copyDoc.saveAndClose();
// Conversion du document en PDF
var pdf = DocsList.getFileById(copyId).getAs("application/pdf");
// Envoi du mail avec le PDF en PJ
var subject = "Inscription au Géoséminaire";
var body = "Bonjour,\nveuillez trouver en pièce jointe la "+
"fiche d'inscription à imprimer, signer et renvoyer ainsi que "+
"les éléments demandés afin de finaliser votre inscription."+
"\nBien cordialement,\nL'équipe du Géoséminaire";
MailApp.sendEmail(email_address, subject, body,
{htmlBody: body, attachments: pdf});
// On efface le fichier temporaire
// DocsList.getFileById(copyId).setTrashed(true);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment