Last active
January 4, 2016 12:09
-
-
Save Guts/8619998 to your computer and use it in GitHub Desktop.
Publispostage avec Google Form
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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