IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Script Google d'envoi de formulaire


Sujet :

APIs Google

  1. #1
    Membre régulier
    Homme Profil pro
    Infographiste, Webdesigner
    Inscrit en
    Juillet 2012
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Infographiste, Webdesigner
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 109
    Points : 70
    Points
    70
    Par défaut Script Google d'envoi de formulaire
    Bonjour à tous et à toutes,

    J'ai créé un site sous Google sites (dans le cadre d'une formation que je donne là-dessus).

    Je souhaiterai insérer un formulaire de contact. J'ai suivi le tuto suivant (voir ici).

    A la fin du tuto, l'auteur dit d'insérer le script Google suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function formulaireContactEmail(e) {
      try {
        var recipient = "toto@gmail.com";
        var timestamp = e.values[0];
        var email = e.values[1];
        var objet = e.values[2];
        var message = e.values[3]
        var body = ' <'+email+'> vous a envoyé le message : '+message;
        var bodyHTML1 = '<p>Le '+timestamp+', <a href="mailto:'+email+'">'+email+'</a> vous a envoyé : </p>';
        var bodyHTML2 = '<blockquote>'+message+'</blockquote>';
        var advancedArgs = {htmlBody:bodyHTML1+bodyHTML2 , replyTo:email};
        MailApp.sendEmail(recipient, objet, body, advancedArgs);
      } catch(e){
        MailApp.sendEmail(recipient, "Error - Formulaire de contact", e.message);
      }
    }
    (Vous aurez compris qu'il faut remplacer toto@gmail.com par l'adresse où vous voulez recevoir le mail, ce que j'ai fait, bien sûr)

    Le problème... c'est que ça ne fonctionne pas; après avoir cliqué sur Envoyer à la fin de mon formulaire de contact, je reçois un mail avec... :

    1) Comme objet "Error - Formulaire de contact" (mais ça je vois quoi et où changer dans le script pour corriger ce problème).

    2) (Plus grave) Dans le corps du message, le texte suivant : "Impossible de lire la propriété "0" depuis undefined."

    Pouvez-vous SVP m'aider à corriger ce script afin qu'il envoie les contenus des champs du formulaire de contact ?

    J'ai très peu de connaissances en programmation et encore moins en Google Script (ou en Javascript avec qui il me semble avoir beaucoup de similitudes d'où le fait que je poste ce message dans cette section).

    D'avance merci pour vos réponses

    Bonne journée

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Exactement le même problème.
    Une âme charitable pourrait-elle se pencher sur ce souci ?

    Voilà un screen de mon script avec le debug en bas :
    Nom : pbmgscript.jpg
Affichages : 3461
Taille : 3,7 Ko
    Lien vers l'image

    Merci d'avance.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Bon.

    Le problème n'est pas résolu, mais j'ai trouvé une alternative : un script lié au tableur et non-pas au formulaire, qui se nomme FormEmailer.

    Malheureusement, il n'est plus disponible dans la galerie de scripts et n'est pas encore présent dans le catalogue d'addons Google Docs.
    Du fait, il faut télécharger son fichier texte et le copier-coller dans l'éditeur.

    Procédure :
    • Effacer le script précédent depuis l'éditeur Google Forms.
    • Ouvrir les réponses (tableur Google Fields).
    • Depuis votre feuille de données, aller dans l'éditeur de scripts (menu Outils).
    • Créez un nouveau projet vide et effacez le début de code.
    • Ouvrez cette page pour télécharger la dernière version du script.
    • Si c'est une version supérieure à la 3.62, téléchargez la traduction en français en bas de cette page.
      Si c'est la 3.62, utilisez plutôt la mienne, qui est un peu mieux traduite.
    • Copiez-coller le contenu du fichier de traduction de façon à remplacer la variable T du début du script.

    Traduction FR revue et corrigée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    var T = {
      sender: "Nom de l'expéditeur", replyTo: "Répondre à", //please try to keep these first texts short
      to: "Destiné à", cc: "Copie", bcc: "Copie cachée",
      subject: "Objet", body: "Message", html: "html",
     
      fSheet: "Form sheet", fSheetDESC: "Nom de la feuille de calcul contenant les réponses du questionnaire",
      qtt: "Quantité de courriers", qttDESC: "Nombre max. de courriers envoyés pour chaque validation de formulaire",
      qWarn: "Alerte de quota", qWarnDESC: "Seuil de déclenchement quotidien pour envoyer un courrier d'alerte",
      qLimit: "Limite du quota", qLimitDESC: "Seuil en dessous duquel FormEmailer cessera d'envoyer des courriers",
      fLoc: "Emplacement des formules", fLocDESC: "Entrez l'endroit où sont les formules sous la forme: NomDeFeuille!A:B",
      closure: "Mode fermeture", closureDESC: "Ce que le script doit faire après que vos formules ont été évaluées",
      closureValues: "valeurs", closureFormulas: "formules", closureClear: "supprimer",
      quota: "Quota restant", quotaDESC: "Nombre de messages que vous pouvez encore envoyer aujourd'hui",
     
      menuSettings: "Paramètres", menuManually: "Exécution manuelle forcée", menuAbout: "A propos", menuFix: "Réparer",
      version: "{1} - version {2}", //script name; version number
      about1: "Script developpé par {1}", //my name
      about2: "Aide, exemples et tutos disponibles sur", //site link will be in the line bellow
     
      statusEmail: "Courrier{1} envoyés", //email index (will be blank if there"s only one)
      statusNot: "Courrier{1} non envoyés", //email index
      statusError: "Erreur pendant l'envoi de courrier{1}: {2}", //email index; error message
      mailError: "Erreur pendant l'envoi de courrier{1} en ligne{3}: {2}", //email index; error message; line number
      statusQuota: "Limite d'envoi atteinte",
      statusMissingField: "Le champ n'existe pas: {1}", //placeholder name
      statusFormattingErr: "Erreur en formatant le champ: {1}", //full placeholder definition
      statusDateFormatErr: "Erreur en formatant la date au champ: {1}", //full placeholder definition
     
      manualQuestion: "Quelle ligne voulez vous traiter ?\nAjoutez un * après le numéro de ligne pour traiter jusqu'à la fin",
      manualInvalid: "\"{1}\" n'est pas un nombre valide. Arrêt.", //value entered by user
      manual1stMult: "La première ligne est le N°2. Je considère que vous voulez traiter depuis le début.",
      manual1stSingle: "Le numéro de ligne doit être supérieur ou égal à 2, puisque la ligne n°1 contient les en-têtes.",
      manualAfterLast: "Le numéro que vous avez tapé est trop grand ; il n'y a plus de données à cet endroit.",
      manualQuotaWarn: "Vous avez dépassé le seuil d'alertes. Voulez vous continuer quand-même ?",
      manualQuotaLimit: "Vous avez dépassé votre quota\nArrêt du processus en ligne {1}", //line number
      manualSuccessMulti: "Toutes les données entre les lignes  {1} et {2} ont été traitées avec succès", //1st line; last line
      manualSuccessSingle: "Ligne {1} traitée avec succès", //line number
      manualErrors: "Erreurs rencontrées pendant le traitement. Vérifiez la colonne d'état (Status)",
     
      yes: "Oui", no: "Non", ok: "Ok",
      title: "Paramètres de {1}", //script name
      emailTab: "Courrier{1}", //tab index (may be empty if there's only one)
      advTab: "Avancé",
      advIntro: "Vous pouvez ignorer ces paramètres si vous le désirez. Les valeurs par défaut peuvent convenir.",
      advTip1: "*Vous devez '{1}' puis re-ouvrir pour prendre en compte pour les modifications que vous faites ici.", //save and close
      advTip2: "Vous avez des doutes sur ces paramètres ? Vous désirez en apprendre plus sur {1}?", //script name
      advTip3: "Accédez au site d'aide à l'adresse ", //site link bellow
      placeholders: "Choix des variables :",
      addField: "Ajouter un champ :",
      insertPlaceholder: "Insérer une variable", //there will be an arrow in front of this
      saveAndClose: "Enregistrer et fermer",
     
      sheetError: "{1} n'existe pas !", //'Form sheet' parameter name
      numberError: "{1} n'est pas un nombre valide !", //parameter name
      formulasError: "Invalide {1}", //'formulas location' parameter name
      formulasSheetError: "Feuille non-valide en {1}", //'formulas location' parameter name
      formulasColsError: "Référence de colonne invalide en {1}", //'formulas location' parameter name
      errorTitle: "Erreur",
      badSettings: "Vos données n'ont pas été enregistrées.",
      versionConflict: "Votre configuration est en version {1}, et votre script en version {2}. Elles ne sont pas compatibles.\n", //config version; script version
      resolveConflict: "La version de vos paramètres  \"{1}\", n'est pas compatible avec la version de votre script \"{2}\". Voulez-vous écraser vos paramètres avec les valeurs par défaut ?",  //config version; script version
      badConfig: "Vos paramètres sont endommagés ou manquants !\nVoulez-vous les remplacer par les valeurs par défaut ?",
      badConfigCancel: "Échec.\nMessage d'erreur :\n{1}", //error message
      noProblem: 'Il semble y avoir un problème avec vos paramètres.',
      missingSheet: "Impossible de trouver la feuille: {1}", //sheet name
      fSheetMissing: "Votre \"{1}: {2}\" ne peut être trouvé. Choisissez-en un autre, et cliquez \"{3}\" pour corriger", //fSheet parameter name; fSheet parameter value; yes
      cancelMessage: "Annulé",
      errorReportSubject: "{1} Rapport d'erreurs", //script name
      errorReportBody: "Les erreurs suivantes sont survenues en \"{1}\" feuille :\n{2}", //spreadsheet name; errors
      alsoQuota: "De plus, votre quota est en dessous du seuil d'alerte",
      quotaMailSubject: "{1} Alerte de quota", //script name
      quotaMailBody: "Votre quota actuel est de : {1}\nIl est inférieur au seuil d'alerte: {2}", //remaining quota; quota warning
     
      pickLanguage: "Choisissez la langue :",
      langIncomplete: "Cette traduction a été écrite pour une version plus ancienne du script, et est probablement incomplète.",
      pickSheet: "Sélectionnez la feuille qui contient les réponses de votre questionnaire (ou les données à rassembler) :",
      install: "Installer",
      overwrite: "Vous confirmez que vous désirez écraser toute votre feuille \"{1}\" ", //script name
      defaultBody: "Valeurs soumises :",
      defaultSubject: "Nouveau formulaire soumis",
      blankSheet: "Votre feuille \"{1}\" est vide ! Créez votre formulaire, ou une structure de données basique avant d'installer le script ! Il pourra ainsi créer des valeurs par défaut qui vous conviendront.", //sheet name
      statusColumn: "{1} Status", //script name
      relocateStatus: "Dans cette nouvelle version du script, la colonne d'état est la première, au lieu d'être la dernière. Je l'ai déplacée pour vous. Merci de vérifier.",
      statusComment: "Cette colonne doit toujours être la première.",
      settingsComment: "Ne modifiez pas cela manuellement ! Utilisez le panneau des paramètres !",
      header: "{1}\nMode automatique :\nVos paramètres sont enregistrés ici :", //script's name (this text must always have 3 lines)
      instructions: "Guide de paramétrage :\n"+ //'Form Sheet' parameter name
      "Si vous renommez votre feuille de données, n'oubliez pas de renommer également le paramètre \"{1}\".\n"+
      "Une bonne habitude est d'utiliser la première ligne de données avec des données quelconques, ce qui vous permet de faire des tests avant de traiter toute la feuille.\n"+
      "Les paramètres peuvent être utilisés dans n'importe quel champ, y compris Destinataire, Sujet, etc.\n"+
      "Le caractère \"#\" est utilisé pour délimiter les variables; si vous désirez utiliser ce caractère, écrivez-le 2 fois \"##\". Ils seront remplacés par un seul.\n"+
      "Vous pouvez insérer des instructions de formatage en utilisant le caractère  \"|\" après le nom du champ. Voyez les formats disponibles sur l'aide du site.\n"+
      "http://sites.google.com/site/FormEmailer\n"+
      "\n"+
      "Instruction pour une nouvelle installation :\n"+
      "Vous devez programmer les déclencheurs pour que le script soit exécuté automatiquement. Pour cela, les étapes sont :\n"+
      "- Cliquez sur le menu \"Outils\" > \"Éditeur de scripts...\"\n"+
      "- Dans la fenêtre de l'éditeur\n"+
      "-- Vérifiez que le script {1} est ouvert, et sélectionné (normalement c'est le cas)\n"+
      "-- Cliquez sur le menu  \"Déclencheurs\" > \"Déclencheurs du script actuel...\"\n"+
      "--- Cliquez sur le seul lien, et créez un nouveau déclencheur comme ceci :\n"+
      "timeDriven - Time-driven - Minutes timer - Every minute (déclenché par le délai - par minutes - toutes les minutes)\n"+
      "--- Cliquez sur 'Enregistrer'\n"+
      "-- Vous pouvez fermer la fenêtre d'édition\n"+
      "La zone d'indication de l'état du script (Cellule B2) peut prendre quelques minutes pour se mettre à jour."
    };
    C'est pas fini !
    • Revenez dans l'éditeur de scripts et copiez-collez notre script ainsi modifié.
    • Enregistrez. Nommez-le FormEmailer par exemple.
    • Maintenant, dans le menu Exécuter, cliquer sur onInstall.
    • Validez l'autorisation et faites à nouveau Exécuter -> onInstall.
    • Revenez sur votre feuille de données : un menu FormEmailer est apparu. (Notez bien : pour le faire ré-apparaître lors d'une prochaîne ouverture, vous devrez refaire Exécuter - onInstall)
    • Déployez ce nouveau menu et cliquez sur Install. Choisissez la langue et cliquez sur le bouton.
    • L'installation se termine en ouvrant une nouvelle feuille. Revenez à votre première feuille (1er onglet du bas).
    • Une nouvelle colonne est apparue. Ne la modifiez pas, ne modifiez pas l'ordre des colonnes.

    L'installation du script est terminée.
    Maintenant, il faut paramétrer l'e-mail qui sera envoyé :
    • Ça se passe dans le menu FormEmailer -> Paramètres.
    • Remplacez l'adresse du champ "Pour" ou "Destiné à" si ça n'est pas la bonne.
    • Si vous souhaitez exploiter les données du formulaire, sélectionnez la variable à insérer dans le volet en haut à droite et cliquez sur le lien "insérer une variable".
      Par exemple, j'ai mis "[site] " en objet suivi de la variable #Objet# relatif à mon formulaire. Si l'internaute écrit comme objet "demande d'info", j'aurai "[site] demande d'info".
    • Pareil pour le corps du message, que vous pouvez formater en HTML. Je vous livre ma version de l'e-mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <p>Le <i>#Horodateur|M/d/yyyy H:mm:ss#</i>, <b>#Nom#</b> <a href="mailto:#Adresse mail#">#Adresse mail#</a> a envoyé ce message depuis le formulaire du site <a href="https://sites.google.com/site/votregooglesite/">Nom de votre Google Site</a> :</p>
    <p><b>Objet :</b> #Objet#</p>
    <p><b>Contenu :</b><br>
    #Message#</p>
    <p style="text-align:center;"><span style="font-size:x-small;">Ce message vous est automatiquement <u>envoyé à vous-même</u> par le script <i>FormEmailer</i> (Henrique Abreu) depuis le tableur d'un formulaire Google.</span><br><b>Ne répondez pas à votre propre e-mail. Utilisez le lien en début de message.</b></p>
    Une fois finie la personnalisation, sauvegardez et fermez.
    Il vous faut maintenant ajouter un déclancheur :
    • Dans le menu Outils, retournons dans l'éditeur de scripts.
    • Ensuite, aller dans le menu Ressources et cliquer sur Déclancheurs du projet actuel.
    • Ajoutez un déclancheur de type timeDriven, À partir de la feuille de calcul et Lors de l'envoi du formulaire.
    • Enregistrez. C'est bon, vous avez fini !!!


    Sources [EN] :

    https://sites.google.com/site/formem...ebsite-source:

Discussions similaires

  1. Script envoi données formulaire vers email
    Par vigiepresse dans le forum Langage
    Réponses: 2
    Dernier message: 16/03/2011, 12h52
  2. script d'envoi de formulaire
    Par AleksFaure dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/05/2010, 17h16
  3. script d'envoi de formulaire
    Par ronaud dans le forum Dreamweaver
    Réponses: 0
    Dernier message: 19/12/2009, 15h10
  4. Script d'envoie de formulaire incorect - besoin d'aide
    Par Cuenod dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 15/11/2007, 20h23
  5. Script error sur envoi de formulaire sous IE
    Par loick2000 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 14/05/2007, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo