2015-03-08 46 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