2014-12-04 72 views
0

爲僱主開展一個相當直接的項目。我需要一份調查表格,在提交時會將答案轉儲到電子表格中。我正在使用獨立應用上的Google Apps腳本。項目管理決定反對谷歌表格。無法遍歷Google Apps腳本中的單選按鈕值

我遇到問題是檢索單選按鈕值。有許多單選按鈕問題,我需要能夠遍歷它們以獲取它們的值。

用戶界面是通過氣的了UiApp服務做到:用於創建單選按鈕組

function doGet(e){ 
    var app = UiApp.createApplication(); 

    // set up the form 
    var form = app.createFormPanel(); 
    var flow = app.createFlowPanel(); 
    form.add(flow); 
    app.add(form); 

    // create the radio button groups (they are all Likert scales). 
    // I've written a function that creates a single group (see below) 
    for (var i=0; i<24; i++){ 
    likertScale(i, flow); 
    }; 

    flow.add(app.createSubmitButton('Submit') 

    return app; 
} 

我李克特量表()函數:

function likertScale(name, flow) { 
    // the 'name' argument allows me to pass in the var i from the 
    // for loop above to give each radio button group a unique name 
    // the 'flow' argument allows me to pass in the var flow that 
    // I created when setting up the form 

    var app = UiApp.getActiveApplication(); 
    // create the N/A option, assign the group's name, give the button a label 
    // and a value 
    flow.add(app.createRadioButton('item'+name, 'N/A').setFormValue('NA')); 
    for (var j=1; j<6; j++) { 
    // create the 5-point Likert scale; assign the group's name to each button, 
    // use j to give each a label and a value 
    flow.add(app.createRadioButton('item'+name,j).setFormValue(j); 
    } 

    return app; 
} 

爲了測試檢索值的前提下,我添加標籤的文本包含應用程序的值。該函數的相關部分:

function doPost(e) { 
    var app = UiApp.getActiveApplication(); 
    for (var i=0; i<24; i++){ 
    var radio = 'item'+i; 
     // I've previously set the name of each radio button group 
     // as 'item#', where # is a number 0-23. 
    app.add(app.createLabel().setText('You selected ' + e.parameter.radio)); 
     // The idea is that each iteration recreates the name of a radio 
     // button, then uses that name to inform e.parameter.radio 
    }; 

    return app; 
} 

什麼是真正困惑對我來說是同時上面的代碼中吐出「您選擇了不確定的」 24倍,下面的代碼完全工作:

function doPost(e) { 
    var app = UiApp.getActiveApplication(); 
    app.add(app.createLabel().setText('You selected ' + e.parameter.item0 

    return app; 
} 

看來,只要我不嘗試任何循環,而且我手工編碼整個事情,一切都很好。

對此有何見解?

+0

任何人試圖重現這將需要編寫一個用戶界面,猜測你有什麼。您可以通過提供重現問題所需的所有(最小)代碼來幫助解決問題。 – Mogsdad 2014-12-04 20:19:33

+0

這沒問題。 – ishmael624 2014-12-04 20:24:59

回答