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 :

Liste déroulante plusieurs niveaux [Google Sheets]


Sujet :

APIs Google

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Liste déroulante plusieurs niveaux
    Bonsoir à tous,

    Je viens vers vous concernant la construction d'un système de listes déroulantes dépendantes sur plusieurs niveaux, que je code en JS sur l'éditeur Appscript de Google SS.
    Une feuille pour l'affichage des listes : DEVIS
    Une autre ou figure les donnes: DATAS

    Je bloque sur la partie du code ci-dessous, avec le message d'erreur suivant:
    "TypeError: Cannot read property 'range' of undefined"
    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
    var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DEVIS");
    var wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATAS");
    var options =  wsOptions.getRange(2, 1,wsOptions.getLastRow()-1,2).getValues;
     
    function onEdit(e)
    {
      var activeCell = e.range;
      var val = activeCell.getRange();
      var wsname = activeCell.getSheet().getName()
      if (wsname === "DEVIS" && val ==="B1")
      {
      var filteredOptions = options.filter(function(o){return o[0] === val});
      var listToApply = filteredOptions.map(function(o){return o[1]});
      var cell = ws.getRange("D2");
      applyValidation(listToApply,cell);
      }//end If
     
    } // end onEdit
     
    function applyValidation(list,cell){
      var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DEVIS");
      var rule = SpreadsheetApp
      .newDataValidation()
      .requireValueInList(list)
      .setAllowInvalid(false)
      .build();
      cell.setDataValidation(rule);
    }
    Si je remplace la fonction onEdit en schintant l'argument "e" et la propriété "range" en attribuant à val une cellule déjà remplie, comme ci-dessous, j'obtiens cette fois ci l'erreur suivante: "TypeError: options.filter is not a function"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function test(){
      //var options = 
      var val = ws.getRange("B1");
      var filteredOptions = options.filter(function(o){return o[0] === val});
      var listToApply = filteredOptions.map(function(o){return o[1]});
      var cell = ws.getRange("D1");
      applyValidation(listToApply,cell);
    }
    Je suis à votre dispo si ça manque d'info. Je tourne en rond depuis deux jours, de l'aide serait fortement appréciée !
    D'avance merci, excellente soirée à vous.
    Baptitste.

  2. #2
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Deux éléments de réponses:
    - il manquait une série de "()" dans la déclaration de options, d'où la fonction filtre qui ne fonctionnait pas
    - la fonction onEdit ne peut se tester via le bouton d'exécution, mais simplement en modifiant le document/plage/cellule concerné(s) selon les conditions appliquées à la fonction.

    Au plaisir !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/08/2010, 18h23
  2. liste avec plusieurs niveaux hiérarchiques
    Par pigeon11 dans le forum ASP
    Réponses: 1
    Dernier message: 22/12/2008, 21h05
  3. Comment réaliser une liste déroulante à deux niveaux !?
    Par Dubbiker dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/07/2007, 11h51
  4. Réponses: 14
    Dernier message: 26/05/2006, 18h45
  5. Réponses: 4
    Dernier message: 23/09/2005, 13h29

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