Bonjour,
J'essaye de faire une application toute bête sous app script
J'ai une page Home qui affiche toutes les lignes contenues dans une google sheet.
Je crée dynamiquement un select avec les valeur de la première colonne.
Quand on clique sur le btn je voudrait ouvrir une nouvelle page avec les données correspondant aux valeur du select. Sur le principe c'est pas bien compliqué..
Sur la page Home.html :

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<select multiple id="title">
        <option value="0" disabled selected>Title</option>
        <? var datas = title; 
              for (var i = 0; i < datas.length; i++) { ?>
                    <option value="<?!= datas[i] ?>"><?!= datas[i] ?></option>
         <? } ?>
</select>
 
 <a id="lien" href="<?= ScriptApp.getService().getUrl(); ?>?v=resultSearch"  onclick="onSelected()">Search</a>

dans le JS :
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
function onSelected(){
 
    var selectedListTitle = []; 
    var objT = {};
    var selectBoxTitle = document.getElementById("title");
    for (i=1; i < selectBoxTitle.options.length; i++) {
        if (selectBoxTitle.options[i].selected) {
             objT = {"title": selectBoxTitle.options[i].value};
             selectedListTitle.push(objT);
             console.log(selectBoxTitle.options[i].value);
        }
     } 
 
    google.script.run.withSuccessHandler(onSuccess).resultSearchSelect(selectedListTitle); 
}

Dans le GS :
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
function resultSearchSelect(selectedListTitle) {
    var list = []; 
    Logger.log(selectedListTitle);  //la data est bien recu
 
    var ss = SpreadsheetApp.openByUrl(url); //connect Sheet
    var ws = ss.getSheetByName("Portfolio");
    var obj = {};
    var dataTab = []; 
    var data = ws.getRange(3,2,ws.getRange("A1").getDataRegion().getLastRow(),39).getValues();
 
    for(var i = 0; i < data.length; i++){
        var truc = data[i][0]; 
        if(list.indexOf(truc)>-1){
              Logger.log("<= -1 " + data[i][0]); 
              obj = {"project": data[i][0]}; 
              dataTab.push(obj); 
        }
    }
 
     var tmp =  HtmlService.createTemplateFromFile("resultSearch");
     tmp.dataTab = dataTab;
     return tmp;
}
Et là rien ne s'affiche dans la vue :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<ul>
      <? var data = dataTab;
             for (var i = 0; i < data.length; i++) { ?>
                          <li><?!= data[i].project ?></li>
        <? } ?>
</ul>


J'ai donc essayé de déclarer des valeur en dure dans le GS, et ces valeur marchent, elle sont pourtant identique à celles reçues en paramètres.
J'ai donc rajouter les valeurs envoyées en param à celles declarées en dures... Et dans ma vue, je n'ai que celles en dures.... voici mon code GS :

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
 
function resultSearchSelect(selectedListTitle) {
     var list = []; 
     Logger.log("-------liste envoyée en param-----------"); 
     Logger.log(selectedListTitle);  
 
 
      var listTitle = [{"title": 'test2'},
                           {"title": 'test3'}]; 
      Logger.log("-------liste en dure-----------"); 
      Logger.log(listTitle); 
 
 
       Logger.log("------toutes les valeur dans la meme liste ------------");  
       for (var i in listTitle) {
              list.push(listTitle[i].title); 
       }          
       for (var i in selectedListTitle) {
              list.push(selectedListTitle[i].title); 
       }  
 
      Logger.log(list);  
 
 
      for (var i in list) {
             Logger.log(list[i]); 
      } 
 
      var ss = SpreadsheetApp.openByUrl(url); 
      var ws = ss.getSheetByName("Portfolio");
      var obj = {};
      var dataTab = []; 
      var data = ws.getRange(3,2,ws.getRange("A1").getDataRegion().getLastRow(),39).getValues();
 
      for(var i = 0; i < data.length; i++){
           if(list.indexOf(truc)>-1){
                Logger.log("<= -1 " + data[i][0]); 
                obj = {"project": data[i][0]}; 
                dataTab.push(obj); 
            }
       }
 
      Logger.log("_______avant crea tmp___________") ; 
      for(var i in dataTab){
           Logger.log(dataTab[i]); 
      }
     var tit = "machin";
     var tmp =  HtmlService.createTemplateFromFile("resultSearch");
     tmp.dataTab = dataTab;
     tmp.title = tit;   
 
     Logger.log("________après crea tmp__________") ; 
     for(var i in dataTab){
        Logger.log(dataTab[i]); 
     }
     return tmp;
}
Je ne comprend pas pourquoi seule les valeurs déclarées en dure marchent et pas les autres (qui sont formatées de la même façon);
Si quelqu'un a une idée...
Merci