Avis et conseil google forms

Bonjour à toutes et tous

je sollicite votre aide et votre avis pour un sujet.

j'ai mis en place un formulaire de demande de dépannage sous excel au sein de mon entreprise qui récupère des donnes depuis un sheet google, (trop de restriction au niveau DSI)

j'ai donc des personnes qui remplissent un google forms qui m'alimente mon gsheet pour ensuite etre récupèré et traiter sous excel (pourquoi faire simple quand ....)

Ma question concerne le google form que je trouve horrible, (j'avais envisagé de refaire une application web (appsheet ou autre comme interface)

connaissez vous un moyen de rendre beau un gform ?

Merci à vous

bonjour,

Si votre form n’est pas à votre goût c’est que le thème que vous avez choisi n’est pas fameux

Pourquoi passer la base de données sur Excel ce n’est pas très logique de se passer des avantages des traitements des données par GSheets

Bonjour

je pense en effet que le theme est à revoir,

le soucis de l'utilisation de ce systeme c'est que j'ai déjà un traitement (génération de mail via macro vba vers outlook; création de fichier pdf...)

et que mon entreprise (DSI) bloque tout systeme extérieur, donc c'est le seul moyen que j'ai trouvé (un bidouillage)

Dans ce cas difficile de vous aider pour nous

GSheets et Excel sont deux applis qui fonctionnent différemment l’une est sur l’ordi l’autre et l’autre sur un réseau

L’une utilise VBA de Microsoft l’autre les scripts basés pour partie sur JavaScript

Alors grosses difficultés pour concilier les deux

Oui j'imagine bien, ayant un peu d'expérience sur les deux, mais plus sur excel

en fait je cherchais un système (userform) mais sur google (un peu a la méthode appsheet ou glide) mais en utilisant les formulaires

est ce possible ?

je m'explique, peut on depuis un formulaire avoir des informations d'un sheet (une liste de contact ou de type de réponse) ou est ce que l'utilisation est uniquement descendante form envoi les données à sheet

Il est possible avec GSheets et GAS de faire ce qui est ci-dessous comme dans VBA mais différemment.

ci c'est ceci votre questionnement.

formulaire

Bonjour Gilbert,

si je suis ton raisonnement, il ne serait pas possible de remonter des informations d'une GSheets vers une GForm, sauf si cette form est en réalité une form en HtmlService

y a t'il d'autres possibilités comme une webapp avec doGet/doPost d'après ton expérience ?

je t'avais laissé cette question car cela reste aussi une interrogation pour moi

salut Mike

Je ne confirme pas qu’il n’y ait pas de possibilité j’ai juste voulu montrer la possibilité comme un userform

Avec un script ce doit pouvoir se tester

En passant par les property script peut-être

supprimé

merci beaucoup pour tous vos retours

j'ai pas encore le niveau pour ton comprendre, je vais rester sur mon formulaire de base et je verrais pas la suite

je suis en train d'explorer les possibilités

curieusement, certaines fonctions comme getChoices() pourtant documentées, ne fonctionnent pas chez moi

par contre, je peux à partir d'une feuille

  • créer une liste de choix
  • la supprimer
  • la re-créer
  • je n'arrive pas en réalité à la modifier

bon, il y a encore du travail, mais cela me parait encourageant

Oui c'est intéressant

Ouf ! j'en suis sorti ...

Il est effectivement possible de "scripter" un formulaire à partir d'une feuille.

On peut créer et supprimer par ces fonctions (exemples)

var form = FormApp.openById('id du formulaire');

pour création, j'ai pris ici une question à choix multiple (voir ici pour autres https://developers.google.com/apps-script/reference/forms/form )

  var item = form.addMultipleChoiceItem();
  // var item = form.addListItem();
  item.setTitle('quel est votre logiciel tableur ?')
    .setChoices([
      item.createChoice('Tableur 1'),
      item.createChoice('Tableur 2'),
      item.createChoice('Tableur 3')
    ])
    .showOtherOption(true);

pour suppression (mais cela met un sacré bazar, d'autant plus si on supprime et on pense recréer avec le même titre ... il s'agira pour google d'une nouvelle question (nouvel id) et cela décalera le tout dans la sheet de réponses

  var items = form.getItems();
  for (i = 0; i < items.length; i++) {
    var item = items[i]
    if (item.getTitle() == 'quel est votre logiciel tableur ?') {
      try { form.deleteItem(i) } catch (e) { }
    }
  }

mais je pense que le plus important est la modification selon une liste de choix

function update(){
  var form = FormApp.openById('xxxxxxxxxxxxxxxxxxx');
  var items = form.getItems();
  var titre = 'quel est votre logiciel tableur ?'
  items.forEach(function(item){
    if (item.getTitle() == titre) {
      Logger.log(item.getId() + ' ' + item.getType())
      item.asMultipleChoiceItem().setChoiceValues(['FlexiSheet', 'LibreOffice Calc', 'Microsoft Excel', 'Google Sheets'])
    }
  })
}

on peut donc faire appel à un tableau provenant de la feuille. Génial !

ce qui répond à cette question =

je m'explique, peut on depuis un formulaire avoir des informations d'un sheet (une liste de contact ou de type de réponse) ou est ce que l'utilisation est uniquement descendante form envoi les données à sheet

et cela facilite même la création, il suffit de créer le cadre de la form de façon traditionnelle avec un choix bidon et ensuite injecter les choix à partir de la feuille

attention, il ne s'agit pas de faire des listes de choix dépendantes d'autres choix à ce stade)

Bonjour et merci pour le retour

je vais tenter de comprendre tout cela et voir si je peux en faire quelque chose, mais super pour l'effort et l'investissement pour ma question

À ta disposition en cas de besoin ... le sujet me chatouillait depuis quelques temps, merci d'avoir posé la question !

Voici où j'en suis

je vous mets une image car le fichier est attaché à la form (ou vice versa) et ce qui est important est le script

image
  1. je fais un questionnaire bidon avec les bons titres et bons types (liste déroulante, cases à cocher, choix multiples), bref tout ce qui est à dimension variable et qui peut être issu de la feuille
  2. je construis un tableau comme ci-dessus (la case à cocher va servir à faire justement la mise à jour de la question identifiée par son titre)
    1. ligne 1 case à cocher
    2. ligne 2 le titre de la question à mettre à jour
    3. lignes 3 et suivantes les choix possibles
  3. le script est ensuite le suivant
    1. il faut identifier le formulaire par son id
    2. il faut mettre un déclencheur sur onSpeEdit
const form = FormApp.openById('xxxxxxxxxxxxxxxxxxxxxxx');
// mettre un déclencheur
function onSpeEdit(event) {
  var feuille = event.source.getActiveSheet();
  var cellule = event.source.getActiveRange();
  if (feuille.getName() == 'data' && cellule.getRow() == 1 && cellule.getValue()) {
    valeurs = feuille.getRange(3,cellule.getColumn(),feuille.getLastDataRow(cellule.getColumn())-2,1).getValues().flat()
    update(cellule.offset(1, 0).getValue(),valeurs)
    cellule.setValue(!cellule.getValue())
  }
}
function update(titre,valeurs) {
  var items = form.getItems();
  items.forEach(function (item) {
    if (item.getTitle() == titre) {
      var type = item.getType()
      if (type == "MULTIPLE_CHOICE") {
        item.asMultipleChoiceItem().setChoiceValues(valeurs)
        toast()
      }
      else if(type == "LIST"){
        item.asListItem().setChoiceValues(valeurs)
        toast()
      }
      else if(type == "CHECKBOX"){
        item.asCheckboxItem().setChoiceValues(valeurs)
        toast()
      }
    }
  })
}
Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastRow();
  var range = this.getRange(lastRow,col);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};
function toast(){
  SpreadsheetApp.getActive().toast(`${form.getTitle()} mis(e) à jour !`)
}
Rechercher des sujets similaires à "avis conseil google forms"