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 :

Récupérer les informations d'un formulaire


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 8
    Par défaut Récupérer les informations d'un formulaire
    Bonjour à tous,

    Dans mon dernier post, le forum m'avait aidé à trouver un script qui permettait de récupérer les informations saisies dans une forms HTML sur googlesheet.

    il s'agit du script ci-dessous:

    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
    const sheetName = 'Sheet1'
    const scriptProp = PropertiesService.getScriptProperties()
     
    function initialSetup () {
      const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
      scriptProp.setProperty('key', activeSpreadsheet.getId())
    }
     
    function doPost (e) {
      const lock = LockService.getScriptLock()
      lock.tryLock(10000)
     
      try {
        const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
        const sheet = doc.getSheetByName(sheetName)
        const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
        const nextRow = sheet.getLastRow() + 1
     
        const newRow = headers.map(function(header) {
        return header === 'Date' ? new Date() : e.parameter[header]
        })
        sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
     
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
          .setMimeType(ContentService.MimeType.JSON)
      }
     
      catch (e) {
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
          .setMimeType(ContentService.MimeType.JSON)
      }
     
      finally {
        lock.releaseLock()
      }
    }
    qui fonctionne très bien...

    Dans ce script la date et l'heure à laquelle est remplie le formulaire sont automatiquement renseignées à la colonne 1 de ma feuille googlesheet.
    J'ai voulu le modifier pour que l'email de l'utilisateur connecté soit également renseigné automatiquement dans la colonne 2 de la feuille googlesheet.
    j'ai donc ajouté cette instruction dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        const newRo = headers.map(function(header) {
          return header === 'Email' ? Session.getActiveUser().getEmail() : e.parameter[header]
        })
        sheet.getRange(nextRow, 1, 1, newRo.length).setValues([newRo])
    ce qui donne ceci:
    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
     const sheetName = 'Sheet1'
    const scriptProp = PropertiesService.getScriptProperties()
     
    function initialSetup () {
      const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
      scriptProp.setProperty('key', activeSpreadsheet.getId())
    }
     
    function doPost (e) {
      const lock = LockService.getScriptLock()
      lock.tryLock(10000)
     
      try {
        const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
        const sheet = doc.getSheetByName(sheetName)
        const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
        const nextRow = sheet.getLastRow() + 1
     
        const newRow = headers.map(function(header) {
        return header === 'Date' ? new Date() : e.parameter[header]
        })
        sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
     
        const newRo = headers.map(function(header) {
        return header === 'Email' ? Session.getActiveUser().getEmail() : e.parameter[header]
        })
        sheet.getRange(nextRow, 1, 1, newRo.length).setValues([newRo])
     
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
          .setMimeType(ContentService.MimeType.JSON)
      }
     
      catch (e) {
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
          .setMimeType(ContentService.MimeType.JSON)
      }
     
      finally {
        lock.releaseLock()
      }
    }
    Mais avec ce code, c'est juste l'email qui est renseigné automatiquement pas la date.
    Si je place l'écriture de l'email avant celle de la date dans le code, comme ceci :
    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
    const sheetName = 'Sheet1'
    const scriptProp = PropertiesService.getScriptProperties()
     
    function initialSetup () {
      const activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
      scriptProp.setProperty('key', activeSpreadsheet.getId())
    }
     
    function doPost (e) {
      const lock = LockService.getScriptLock()
      lock.tryLock(10000)
     
      try {
        const doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
        const sheet = doc.getSheetByName(sheetName)
        const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
        const nextRow = sheet.getLastRow() + 1
     
        const newRo = headers.map(function(header) {
        return header === 'Email' ? Session.getActiveUser().getEmail() : e.parameter[header]
        })
        sheet.getRange(nextRow, 1, 1, newRo.length).setValues([newRo])
     
        const newRow = headers.map(function(header) {
        return header === 'Date' ? new Date() : e.parameter[header]
        })
        sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
     
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
          .setMimeType(ContentService.MimeType.JSON)
      }
     
      catch (e) {
        return ContentService
          .createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
          .setMimeType(ContentService.MimeType.JSON)
      }
     
      finally {
        lock.releaseLock()
      }
    }
    c'est la date qui est renseignée automatiquement mais pas l'email.
    Dans tous les cas je n'ai pas les 2 en même temps .

    Quelqu'un aurait-il une idée comment procéder svp ?

    Merci d'avance,

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 522
    Par défaut
    Bonjour,

    Et si vous ajoutez les deux en même temps et dans la même instruction, ça donne quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const newRow = headers.map(function(header) {
        return header === 'Date' ? new Date() : header==="Email" ? Session.getActiveUser().getEmail() : e.parameter[header]
        })
    sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow]);

Discussions similaires

  1. [Google Sheets] Récupérer les informations d'une form HTML
    Par doofy59 dans le forum APIs Google
    Réponses: 10
    Dernier message: 05/06/2023, 16h42
  2. Erreur, Parser : récupérer les liens d'une page html
    Par floflo_2006 dans le forum Général Java
    Réponses: 5
    Dernier message: 13/12/2006, 01h26
  3. Récupérer les informations d'une applet
    Par outlawz dans le forum Applets
    Réponses: 3
    Dernier message: 30/03/2006, 10h05
  4. Réponses: 3
    Dernier message: 10/03/2006, 14h15
  5. Réponses: 5
    Dernier message: 23/12/2005, 19h19

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