2017-09-29 2 views
0

J'ai une feuille avec une colonne de noms de groupes et les éléments dont ils ont besoin pour signaler qu'ils ont fait ou n'ont pas fait. J'ai de la difficulté à créer un script qui permettrait à la colonne de noms de faire une question à choix multiple ET de la diriger vers la bonne page suivante en fonction de la réponse.Création d'un formulaire Google à partir d'une feuille dans un script d'application à l'aide de GO_TO_PAGE

Names  Option1  Option2  Option 3  Option4 
Frank  Something1 Something2 Something3 
Hank  AnotherThing AnotherThing1 AnotherThing3 Anotherthing4 
Bob   Foo   Bar 

La première question est Choix multiple avec la colonne 1 avec les réponses. En fonction de la réponse, j'en ai besoin pour diriger vers une nouvelle section avec les autres colonnes avec le contenu sur la même ligne que la réponse choisie. Choisissez Frank et soumettez-le pour être envoyé à une question Checkbox avec 3 options.

Quelqu'un a le plus faible sur la façon de faire cela? Je peux faire les questions manuellement, mais quand il s'agit de diriger la partie GO_TO_PAGE, je n'arrive pas à faire fonctionner ça. Merci d'avance!

Répondre

0

Voici une approche possible de votre problème. J'utilise une barre latérale qui pourrait tout aussi bien être un dialogue si vous voulez le rendre plus large et pourrait finalement être une webapp. Jetez un oeil à la boîte de dialogue ou la barre latérale et vous verrez que vous obtenez une liste déroulante de nom de votre feuille de calcul et lorsque vous sélectionnez un nom et cliquez sur GetToDoList puis vous obtenez une liste de choses à faire à partir de votre feuille de calcul avec des boutons qui ont des liens vers différentes feuilles que j'ai inclus dans votre feuille de calcul.

J'espère que cela aide.

Code.gs:

function getNames() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getSheetByName('ToDoList'); 
    var rg=sh.getDataRange(); 
    var vA=rg.getValues(); 
    var names=['Select Name']; 
    for(var i=1;i<vA.length;i++) 
    { 
    names.push(vA[i][0]); 
    Logger.log('%s',vA[i][0]); 
    } 
    return names; 
} 

function loadToDoSideBar() 
{ 
    var userInterface=HtmlService.createHtmlOutputFromFile('todolist').setTitle('ToDoLists'); 
    SpreadsheetApp.getUi().showSidebar(userInterface); 
} 

function getToDoList(name) 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getSheetByName('ToDoList'); 
    var rg=sh.getDataRange(); 
    var vA=rg.getValues(); 
    var hl=''; 
    for(var i=0;i<vA.length;i++) 
    { 
    if(vA[i][0]==name) 
    { 
     for(var j=1;j<vA[i].length;j+=2) 
     { 
     if(vA[i][j] && vA[i][j+1]) 
     { 
      hl+=Utilities.formatString('<br /><label>%s<input class="btn1" type="button" value="%s" onClick="goToSheet(\'%s\')" /></label>',vA[i][j],'Go to' + vA[i][j+1],vA[i][j+1]); 
     } 
     } 
    } 
    } 
    return hl; 
} 

function goToSheet(name) 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getSheetByName(name).activate(); 
} 

todolist.html

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
    $(function() { 
     $('#txt1').val(''); 
     google.script.run 
      .withSuccessHandler(updateSelect) 
      .getNames(); 
     }); 
    function updateSelect(vA) 
    { 
     var select = document.getElementById("sel1"); 
     select.options.length = 0; 
     for(var i=0;i<vA.length;i++) 
     { 
     select.options[i] = new Option(vA[i],vA[i]); 
     } 
    } 
    function getToDoList() 
    { 
     var name=$('#sel1').val(); 
     google.script.run 
     .withSuccessHandler(updateToDoList) 
     .getToDoList(name) 
    } 
    function updateToDoList(hl) 
    { 
     document.getElementById('viewlist').innerHTML=hl; 
    } 
    function goToSheet(name) 
    { 
     google.script.run.goToSheet(name); 
    } 
    console.log('My Code'); 
    </script> 
    <style> 
    div.scroll{background-color: #ffffff;width: 250px;height:100%;display:block;margin:0 0 0 5px;padding:0 0 0 10px;} 
    #sel1 option{width:250px;} 
    .type{color:#ff0000;font-weight:500;} 
    .date{color:#080b58;font-weight:500;} 
    .note{font-weight:500;} 
    .btn1{margin:10px 10px 10px 10px;vertical-align:25%;} 
    body{margin:5px 5px 5px 10px;width:275px;} 
    </style> 
    </head> 
    <body> 
    <select id="sel1" style="width:125px;height:35px;margin:10px 0 10px 0;"> 
     <option value="" selected></option> 
    </select> 
    <input type="button" value="GetToDoList" onClick="getToDoList()" /> 
    <br /><div id="viewlist" class="scroll"></div> 
    </body> 
</html> 

Voici ce que je faisais avec vos données. Je viens d'ajouter une autre colonne entre chaque valeur pour les emplacements ou les liens (pas sûr de ce que vous voulez). Mais le code vous montre comment vous pouvez intégrer des liens vers différentes feuilles dans la solution.

enter image description here

Voici ce que la boîte de dialogue ressemble à:

enter image description here