2015-01-15 63 views
0

我爲我們的銷售同事準備了Google表單,可以讓他們選擇他們的姓名,他們負責的國家,然後回答幾個問題(這些問題總是相同的)。根據Google Apps腳本中的答案創建表單問題

名稱列表和關聯的國家被保存在電子表格中。我使用這個列表來填充名稱的ListItem和每個同事的國家列表ListItem。

目前我有一個歡迎頁面有兩個ListItems:名稱和產品。 選擇一個名稱並點擊「繼續」後,表格跳轉到相應的頁面,其中國家ListItem已經預先填好了國家。

我的問題是,這種方式我一直有一個非常長的形式,雖然用戶只看到兩頁。此外,所分配的工作表對每個問題都有一個單獨的列。

是否有可能基於所選名稱「即時」生成第二頁?

更新:

這是我的createFrom功能。通過傳遞所選名稱來生成questionBlock「按需」會很好,或者至少設置生成的問題以保存對電子表格中同一列的響應。

function createForm() { 

    //Names 
    var Names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; 
    var fullNames = ['Mr. Z A', 'Mr. Y B', 'Mr. X C', 'Ms. W D', 'Mr. V E', 'Ms. U F', 'Mr. T G', 'Mr. S H', 'Mr. R I', 'Mr. Q J']; 
    var Products = ['Product 1', 'Product 2']; 
    var questionBlock = {}; 

    var form = FormApp.create('Vertriebsländer und Zulassungsplan 2015'); 

    //Page 1 
    form.setTitle('formTitle') 
    .setDescription('Please fill out the following survey.'); 
    form.hasRespondAgainLink(); 
    form.canEditResponse(); 

    var lName = form.addListItem() 
    .setTitle('Please choose your name:') 
    .setRequired(true); 

    var choicesName = lName.getChoices(); 
    choicesName = []; 

    var lProduct = form.addListItem() 
    .setChoiceValues(Products) 
    .setTitle('Please choose the product:') 
    .setRequired(true); 

//Question Block Page 
    for(a = 0; a < Names.length; a++){ 
     choicesName.push(
     lName.createChoice(fullNames[a], 
         form.addPageBreakItem() 
         .setTitle('Welcome ' + fullNames[a] +'!') 
         .setGoToPage(FormApp.PageNavigationType.SUBMIT))); 

questionBlock[ ('lCountries' + Names[a]) ] = form.addListItem(); 
    questionBlock[ ('lCountries' + Names[a]) ].setTitle('Please choose a country:'); 
    questionBlock[ ('lCountries' + Names[a]) ].setRequired(true); 

questionBlock[('txtQuestion1')] = form.addTextItem(); 
    questionBlock[('txtQuestion1')].setTitle('Common Question 1'); 
    questionBlock[('txtQuestion1')].setRequired(true); 

questionBlock[('lQuestion2')] = form.addListItem(); 
    questionBlock[('lQuestion2')].setTitle('Question2'); 
    questionBlock[('lQuestion2')].setChoiceValues(['A', 'B', 'C']); 
    questionBlock[('lQuestion2')].setRequired(true); 

questionBlock[('lQuestion3')] = form.addListItem(); 
    questionBlock[('lQuestion3')].setTitle('Question3'); 
    questionBlock[('lQuestion3')].setChoiceValues(['A', 'B', 'C', 'D']); 
    questionBlock[('lQuestion3')].setRequired(true); 

questionBlock[('txtQuestion4')] = form.addTextItem(); 
    questionBlock[('txtQuestion4')].setTitle('Do you have any remarks?'); 
    questionBlock[('txtQuestion4')].setRequired(false); 
    } 

    lName.setChoices(choicesName); 

    //Fill country selection dropdown================== 

    //Spreadsheet 
    var ssCountries = SpreadsheetApp.openById('abcdefghijklmnopqrstuvwxyz1234567890'); 
    //Importing data from spreadsheet 
    var dataRange = ssCountries.getDataRange(); 
    var values = dataRange.getValues(); 


    for (i = 0; i < Names.length; i++) 
    { 
    choices = questionBlock[ ('lCountries' + Names[i]) ].getChoices(); 
    choices = []; 
    for (j = 0; j < values[0].length; j++) 
    { 
     var curr_name = values[0][j]; 
    if (curr_name == Names[i]) 
     { 
     for (k = 1; k < values.length; k++) 
     { 
      if (values[k][j].toString().length > 0) 
      {   
      choices.push(questionBlock[ ('lCountries' + Names[i]) ].createChoice(values[k][j])); 
      questionBlock[ ('lCountries' + Names[i]) ].setChoices(choices); 
      } 
     } 
     } 
    } 
    } 
    //Country selection dropdown filled================== 
} 
+0

請發佈一些你曾經工作過的代碼。 – KRR 2015-01-15 17:11:33

+0

我編輯了最初的queston以包含源代碼。我想使用getItemResponds,但我無法真正弄清楚如何調試它,因爲它在調試時總是空的。 (但也許我只是不明白這整個getResponses的東西) – 2015-01-17 09:04:04

回答

0

我不認爲你可以編輯當前打開的窗體,並顯示或隱藏問題。你當然可以用HTML做到這一點,但我認爲你不可以在Google表單中這樣做。你可以用代碼編輯一個當前表單,但是你需要保存它,關閉表單,讓用戶重新打開它。

根據文檔,你可以有一個窗體邊欄。

Google Documentation - custom sidebar

所以,你可以顯示自定義側邊欄,並顯示或隱藏根據來自用戶的響應使用HTML領域。所以,我的建議是,您的表單中沒有自定義的第二頁,您可以根據用戶輸入動態更改自定義側欄。

相關問題