我试图从服务器端函数getPrepList()返回一个数组。从客户端访问时,“ prepList []”返回“未定义”。这只是完整的code.gs文件的片段。
//
function getPrepList(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var doPrepRange = sheet.getRange('F:F');
var itemNameRange = sheet.getRange('A:A');
var prepList = new Array();
for(var i = 1; i < getFirstEmptyRow(); i++){
if(doPrepRange.getCell(i,1).getValue() == true){
prepList.push(itemNameRange.getCell(i, 1).getValue());
};
};
Logger.log(prepList);
return(prepList);
};
function doGet(){
return HtmlService.createHtmlOutputFromFile('index');
};
//
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<h1><div align="center">PREP LIST MAKER v 2.0</h1></div>
<button align="center" onClick="createCountSheet()">Nightly Count Sheet</button><br />
<button align="center" onClick="showPrepList()">Get Prep List</button><br />
<script>
console.info("before execution");
function createCountSheet(){
google.script.run
.generateCountSheet();
};
google.script.run
.withSuccessHandler(showPrepList)
.getPrepList();
function showPrepList(prepList){
console.log(prepList);
};
</script>
</body>
</html>
答案 0 :(得分:1)
尝试一下:
function getPrepList(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();;
var rg=sh.getDataRange();
var vals=rg.getValues();
var prepList=[];
for(var i=1;i<vals.length;i++){
if(vals[i][5]){
prepList.push(vals[i][0]);
}
}
return prepList;
}
我不清楚您想要什么表,所以我只是选择了活动表。我假设您有一个标题行,所以我从1开始而不是从0开始循环。顺便说一下,我没有对此进行测试,因此您可能需要对其进行一些调整。
答案 1 :(得分:1)
如果您通过按钮呼叫showPrepList(prepList)
,
<button align="center" onClick="showPrepList()">Get Prep List</button><br />
prepList
将是undefined
,因为您没有将任何参数作为prepList
传递。
尝试
<button align="center" onClick="showPrepListFromSheet()">Get Prep List</button><br />
<script>
console.info("before execution");
function showPrepListFromSheet(){
google.script.run
.withSuccessHandler(showPrepList)
.getPrepList();
function showPrepList(prepList){
console.log(prepList);
};
}</script>