2016-07-11 10 views
1

Ich habe erfolgreich ein Google-Formular erstellt, das aus einer Tabelle mit dem folgenden Code erstellt wird: https://www.youtube.com/watch?v=BYA4URuWw0s. Jetzt möchte ich das Formular auf eine bestimmte Frage basierend auf der Antwort einer vorherigen Frage gehen lassen, ohne die Funktion der Aktualisierung aus der Tabelle zu verlieren. Ich habe versucht, Code von hier zu ändern: How to assign Go_To_Page in Form Service on Multiple Choice?, aber noch etwas Glück haben. Unten ist, was ich jetzt habe. Ich bin sehr neu in der Codierung und jede Hilfe wird sehr geschätzt werden. Danke im Voraus!!!Wie kann ich ein Google-Formular aus einer Tabelle scripten, um anhand einer Antwort zu einer bestimmten Seite zu gelangen?

//insert your form ID 
var FORM_ID = '1iA8jX720Eqi_GKwiA1RJiWwzt3vJ8XOOAqh-SjO9mXM'; 
//insert your sheet name with a list 
var EMP_SHEET_NAME = 'empROSTER'; 
//insert your range of lis 
//insert list id (before run getItemsOfForm function and look at t as A1Notation 
var range1 = 'B2:B'; 
//insert list id (before run getItemsOfForm function and look at log CTRL+Enter) 
var ITEM_ID = '1097376824'; 

    /* 
    add date question? - 
    form.addDateItem() 
     .setTitle('Date of Work Performed') 
    */ 

//insert your sheet name with a list 
var JOB_SHEET_NAME = 'jobROSTER'; 
//insert your range of list as A1Notation 
var range2 = 'C2:C'; 
//insert list id (before run getItemsOfForm function and look at log CTRL+Enter) 
var ITEM2_ID = '773657499'; 

//insert your sheet name with a list 
var AT_SHEET_NAME = '300'; 
//insert your range of list as A1Notation 
var range3 = 'B2:B'; 
//insert list id (before run getItemsOfForm function and look at log CTRL+Enter) 
var ITEM3_ID = '1884670833'; 

//insert your sheet name with a list 
var DT_SHEET_NAME = '1000'; 
//insert your range of list as A1Notation 
var range4 = 'B2:B'; 
//insert list id (before run getItemsOfForm function and look at log CTRL+Enter) 
var ITEM4_ID = '379969286'; 

//insert your sheet name with a list 
var CT_SHEET_NAME = '2000'; 
//insert your range of list as A1Notation 
var range5 = 'B2:B'; 
//insert list id (before run getItemsOfForm function and look at log CTRL+Enter) 
var ITEM5_ID = '128282987'; 

//insert your sheet name with a list 
var HOURS_SHEET_NAME = 'hourROSTER'; 
//insert your range of list as A1Notation 
var range6 = 'B2:B'; 
//insert list id (before run getItemsOfForm function and look at log CTRL+Enter) 
var ITEM6_ID = '1385334889'; 


    //Section in question 
    function createGoTo(){ 
    var af = FormApp.openById(FORM_ID); 
    var pAdmin = af.getItemById(AT_SHEET_NAME); //use findPageIds to get the page id of a pre-created page 
    var pDesign = af.getItemById(DT_SHEET_NAME); 
    var pCon = af.getItemById(CT_SHEET_NAME); 
    var item = ITEM2_ID 
    //create choices as an array 
    var choices = []; 
    choices.push(item.createChoice('Administration Job', pAdmin)); 
    choices.push(item.createChoice('Design Job', pDesign)); 
    choices.push(item.createChoice('Construction Job', pCon)); 

    // assignes the choices for the question 
    item.setChoices(choices); 
    } 

    function findPageIds(){ 
    var af = FormApp.getActiveForm(); 
    var pages = af.getItems(FormApp.ItemType.PAGE_BREAK); 

    for (i in pages){ 
     var pName = pages[i].getTitle(); 
     var pId = pages[i].getId(); 
     Logger.log(pName+":"+pId); 
    } 
    } 
    //End of section in question 


function updateEmpName() { 
var values_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(EMP_SHEET_NAME).getRange(range1).getValues(); 
values_[0][0] = values_[0][0].toString(); 
for(var i = 1; i < values_.length; i++){ 
// the if-block from https://productforums.google.com/d/msg/docs/v8ejYFpoGa8/HVqg6auIAg0J 
if(values_[i][0] != "") { 
    values_[0].push(values_[i][0].toString()) 
    } 
} 
var form = FormApp.openById(FORM_ID); 
var list = form.getItemById(ITEM_ID); 
list.asListItem().setChoiceValues(values_[0]); 
} 

function updateJobName() { 
var values2_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(JOB_SHEET_NAME).getRange(range2).getValues(); 
values2_[0][0] = values2_[0][0].toString(); 
    for(var i = 1; i < values2_.length; i++){ 
    // the if-block from https://productforums.google.com/d/msg/docs/v8ejYFpoGa8/HVqg6auIAg0J 
    if(values2_[i][0] != "") { 
     values2_[0].push(values2_[i][0].toString()) 
} 
} 
    var form = FormApp.openById(FORM_ID); 
var list = form.getItemById(ITEM2_ID); 
list.asListItem().setChoiceValues(values2_[0]); 
} 

function updateAdminTasks() { 
var values3_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(AT_SHEET_NAME).getRange(range3).getValues(); 
values3_[0][0] = values3_[0][0].toString(); 
for(var i = 1; i < values3_.length; i++){ 
    // the if-block from https://productforums.google.com/d/msg/docs/v8ejYFpoGa8/HVqg6auIAg0J 
    if(values3_[i][0] != "") { 
    values3_[0].push(values3_[i][0].toString()) 
    } 
} 
var form = FormApp.openById(FORM_ID); 
    var list = form.getItemById(ITEM3_ID); 
    list.asListItem().setChoiceValues(values3_[0]); 
} 

function updateDesignTasks() { 
var values4_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(DT_SHEET_NAME).getRange(range4).getValues(); 
values4_[0][0] = values4_[0][0].toString(); 
    for(var i = 1; i < values4_.length; i++){ 
    // the if-block from https://productforums.google.com/d/msg/docs/v8ejYFpoGa8/HVqg6auIAg0J 
    if(values4_[i][0] != "") { 
    values4_[0].push(values4_[i][0].toString()) 
    } 
} 
var form = FormApp.openById(FORM_ID); 
    var list = form.getItemById(ITEM4_ID); 
    list.asListItem().setChoiceValues(values4_[0]); 
} 

function updateConstructionTasks() { 
var values5_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CT_SHEET_NAME).getRange(range5).getValues(); 
values5_[0][0] = values5_[0][0].toString(); 
for(var i = 1; i < values5_.length; i++){ 
    // the if-block from https://productforums.google.com/d/msg/docs/v8ejYFpoGa8/HVqg6auIAg0J 
    if(values5_[i][0] != "") { 
    values5_[0].push(values5_[i][0].toString()) 
    } 
    } 
var form = FormApp.openById(FORM_ID); 
var list = form.getItemById(ITEM5_ID); 
    list.asListItem().setChoiceValues(values5_[0]); 
} 

function updateHours() { 
var values6_ = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(HOURS_SHEET_NAME).getRange(range6).getValues(); 
values6_[0][0] = values6_[0][0].toString(); 
for(var i = 1; i < values6_.length; i++){ 
    // the if-block from https://productforums.google.com/d/msg/docs/v8ejYFpoGa8/HVqg6auIAg0J 
if(values6_[i][0] != "") { 
    values6_[0].push(values6_[i][0].toString()) 
    } 
} 
var form = FormApp.openById(FORM_ID); 
var list = form.getItemById(ITEM6_ID); 
list.asListItem().setChoiceValues(values6_[0]); 
} 

function getItemsOfForm(){ 
var form = FormApp.openById(FORM_ID); 
var items = form.getItems(FormApp.ItemType.LIST); 
for(var i in items){ 
    Logger.log('id: ' + items[i].getId() + ' title: ' + items[i].getTitle()); 
} 
} 

Antwort

0

PageBreakItem

Ein Layout Element, das den Beginn einer Seite markiert. Auf Elemente kann von einer Form zugegriffen werden oder erstellt werden.

PageNavigationType

eine ENUM die unterstützten Typen von Seiten Navigation repräsentiert. Auf Seitennavigationstypen kann von FormApp.PageNavigationType zugegriffen werden.

Die Seitennavigation erfolgt, nachdem der Befragte eine Seite mit der Option abgeschlossen hat, und nur dann, wenn der Befragte diese Option ausgewählt hat. Wenn der Befragte mehrere Optionen mit Seitennavigationsanweisungen auf derselben Seite auswählt, hat nur die letzte Navigationsoption eine Auswirkung. Die Seitennavigation wirkt sich auch nicht auf die letzte Seite eines Formulars aus.

Auswahlmöglichkeiten, die die Seitennavigation verwenden, können nicht im selben Element mit Optionen kombiniert werden, die keine Seitennavigation verwenden.

// Create a form and add a new multiple-choice item and a page-break item. 
var form = FormApp.create('Form Name'); 
var item = form.addMultipleChoiceItem(); 
var pageBreak = form.addPageBreakItem(); 

// Set some choices with go-to-page logic. 
var rightChoice = item.createChoice('Vanilla', FormApp.PageNavigationType.SUBMIT); 
var wrongChoice = item.createChoice('Chocolate', FormApp.PageNavigationType.RESTART); 

// For GO_TO_PAGE, just pass in the page break item. For CONTINUE (normally the default), pass in 
// CONTINUE explicitly because page navigation cannot be mixed with non-navigation choices. 
var iffyChoice = item.createChoice('Peanut', pageBreak); 
var otherChoice = item.createChoice('Strawberry', FormApp.PageNavigationType.CONTINUE); 
item.setChoices([rightChoice, wrongChoice, iffyChoice, otherChoice]); 

Sie können die Probe erstellen, indem Sie Google und die in Mogsdad's answert verwendet Umsetzung folgen, um die Strömung zu verstehen.

Ich habe seine Code-Snippet hinzugefügt:

function createForm() { 
// Create a form and add a new multiple-choice item and a page-break item. 
var form = FormApp.create('Form Name'); 
var item = form.addMultipleChoiceItem(); 
item.setTitle('Do you like Food') 
var page2 = form.addPageBreakItem() 
.setTitle('Page 2') 
var item2 = form.addTextItem(); 
item2.setTitle('Why do you like food?') 
var page3 = form.addPageBreakItem() 
.setTitle('Page 3') 
var item3 = form.addTextItem(); 
item3.setTitle("Why don't you like food?") 

item.setTitle('Question') 
.setChoices([ 
item.createChoice('Yes',page2), 
item.createChoice('No',page3) 
]); 
}