2015-03-08 40 views
1

我有一個Google表格中的項目列表。我想使用該表格中的數據來通知下拉列表,允許用戶從列表中選擇一個項目。我可以讓列表在腳本中彈出,但無法弄清楚如何將其返回到html對話框。 這裏是我的代碼.GS:從谷歌工作表獲取列表以填充html中的對話框

function getPoList(){ 
    var fpa = SpreadsheetApp.openById('__WORKING ID___'); 
    var poSheet = fpa.getSheetByName('testSheet'); 
    var poVendor = poSheet.getRange('testVendor'); 
    var poPo = poSheet.getRange('testPo'); 
    var poVendorList = poVendor.getValues(); 
    var poPoList = poPo.getValues();  

    var poList = ''; 
    for (var i = 0; i < poPo.getNumRows(); i++) { 
    poList += "<option value=" + poVendorList[i] + ": " + poPoList[i] + ">" + poVendorList[i] + ": " + poPoList[i] + "</option>"; 
    return poList;  
    }    
} 

這裏是我的.html代碼:

<script type="text/javascript"> 
google.script.run.withSuccessHandler(onSuccess).getPoList(poList); 
    var div = document.createElement('div'); 
    div.className = 'newClass'; 
    div.innerHTML = '<select>' + poList + '</select>'; 
    document.body.appendChild(div); 
</script> 

回答

0

看起來你沒有寫一個函數的withSuccessHandler(onSuccess)

應該是這樣的:

<script type="text/javascript"> 
    google.script.run 
    .withSuccessHandler(onSuccess) 
    .getPoList(poList); 

    function onSuccess(argReturnedHTML) { 
    var div = document.createElement('div'); 
    div.className = 'newClass'; 
    div.innerHTML = '<select>' + argReturnedHTML + '</select>'; 
    document.body.appendChild(div); 
    } 
</script> 

此外,.getValues()返回一個二維數組。我沒有看到你在處理這個問題。

二維數組:

[ ['row one cell one value', 'row one cell two value'], ['row two cell one value', 'row two cell two value'] ] 

爲了獲得內部數組的內在價值,你需要使用兩個索引號:

poVendorList[i][j] 

哪裏i是每個內部數組的索引代表電子表格中的每一行,並且j是該行中每個單元格的值。

poVendorList[rowIndex][cellInRowIndex] 

你並不需要同時使用這兩種指標,但代碼需要以某種方式首先得到的內部數組,然後取出值內陣列。

+1

謝謝!沒有捕獲SuccessHandler的功能就是解決方案。謝謝你的.Values筆記。我將字符串結果連接起來,以便它正好返回我想要的結果。 – edswartz 2015-03-10 02:34:08