Javascript google.script.run返回未定义的数组
我正在尝试从服务器端函数getPrepList()返回数组。从客户端访问时,“prepList[]”返回“undefined”。这只是完整code.gs文件的一个片段 //Javascript google.script.run返回未定义的数组,javascript,arrays,google-apps-script,web-applications,Javascript,Arrays,Google Apps Script,Web Applications,我正在尝试从服务器端函数getPrepList()返回数组。从客户端访问时,“prepList[]”返回“undefined”。这只是完整code.gs文件的一个片段 //// function getPrepList(){ var sheet = SpreadsheetApp.getActiveSpreadsheet(); var doPrepRange = sheet.getRange('F:F'); var itemNameRange = sheet.getRange('
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');
};
函数getPrepList(){
var sheet=SpreadsheetApp.getActiveSpreadsheet();
var doPrepRange=sheet.getRange('F:F');
var itemNameRange=sheet.getRange('A:A');
var prepList=新数组();
对于(var i=1;i<!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>
准备列表生成器v2.0
夜间盘点表
获取准备列表
控制台信息(“执行前”);
函数createCountSheet(){
google.script.run
.generateCountSheet();
};
google.script.run
.withSuccessHandler(showPrepList)
.getPrepList();
函数showPrepList(prepList){
console.log(prepList);
};
试着这样做:
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;
}
函数getPrepList(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();;
var rg=sh.getDataRange();
var vals=rg.getValues();
var prepList=[];
对于(var i=1;i请尝试以下方法:
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;
}
函数getPrepList(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();;
var rg=sh.getDataRange();
var vals=rg.getValues();
var prepList=[];
对于(var i=1;i如果您通过按钮调用
showPrepList(prepList)
<button align="center" onClick="showPrepList()">Get Prep List</button><br />
全文如下:
<button align="center" onClick="showPrepList()">Get Prep List</button><br />
全文如下:
return JSON.stringify(myData);
…myData=JSON.parse(receivedInput);
还要注意,由于重复使用电子表格服务,您的服务器代码速度非常慢(当您可以使用内存数组时,在循环中调用getValue
和getCell
)您希望在返回值中找到哪种类型的数据?多少数据?您是否已经审阅了允许的类型?我返回了每个谷歌文档中允许的所有字符串原语。返回大小取决于在DEALALRE范围内的行返回“true”。接收后rsing:return JSON.stringify(myData);
…myData=JSON.parse(receivedInput);
还要注意,由于重复使用电子表格服务,您的服务器代码速度非常慢(当您可以使用内存数组时,在循环中调用getValue
和getCell
)。感谢您抽出时间回答。我对“code.gs”中的任何内容都没有问题。运行服务器端时,getPrepList函数返回正确的值。我遇到的问题是通过“google.script.run”检索数组客户端。我的直觉(以及非常有限的经验)是,这是一种“异步"我试图用'index.html'中的'withSuccessHandler'回调函数解决的问题。在客户端和服务器之间可以传递的内容有限制。您可能需要在指南部分检查这些限制。感谢您花时间回答。我对'code.gs'中的任何内容都没有问题。getPrepList函数在运行s时服务器端返回正确的值。我一直遇到的问题是通过“google.script.run”检索数组客户端。我的直觉(以及非常有限的经验)是这是某种“异步”我试图用'index.html'中的'withSuccessHandler'回调函数解决的问题。在客户端和服务器之间可以传递的内容有一些限制,您可能需要在指南部分检查这些限制