【发布时间】:2014-07-17 15:24:31
【问题描述】:
我们有问题。我们现在的代码可以工作,但我们无法让数组返回 html 页面。我们从 html 页面发送一个数字,然后发生 returnData 函数。在执行过程中,它会通过 loopsheetGewoon,然后返回一个数组。数组返回returnData,函数以数组的返回结束。
问题是,当我们尝试将数组获取到 html 页面以便我们可以从电子表格中获取单个数据时,它返回未定义。我们还尝试将 javascript 值传递给 google 应用程序脚本代码,但没有奏效。
function loopSheetGewoon(data, studentNr){
var SpreadSheetKeyA = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
var array = [];
for (var y = 0; y < data.length; ++y ) {
var datum = Utilities.formatDate(data[y][0], "CET", "dd-MM-yyyy hh:mm");
var nummer = data[y][2];
if(studentNr.equals(nummer)){
for (var x = 0; x < 35; x++ ) {
array.push(data[y][x]);
}
return array;
}
}
}
下面是启动的函数。
function returnData(stuNr){
var SpreadSheetKeyA = "1h8fDwCUUPHRdmTHu-5gMyqU294ENZxCZcHCNCuN6r_Y";
var sheet1 = SpreadsheetApp.openById(SpreadSheetKeyA).getActiveSheet();
var data = sheet1.getDataRange().getValues();
var array = [];
array = loopSheetGewoon(data, stuNr);
Logger.log(array);
return array;
}
下面是我们从 html 页面运行的函数。单击按钮时,它会向 returnData 函数发送一个数字(存储为字符串值)。它现在应该用数组填充变量 d,但是它一直返回 undefined。
$("#oph").click(function ophalen(){
var s = $("#nummer").val();
var displayEl = document.getElementById("nummer");
var d = [];
alert(s);
d = google.script.run.returnData(s);
//for( var y = 0; y < d.length(); ++y){
//var naam = data[y][1];
//var studentnr = data[y][2];
//var document = data[y][32];
//}
alert(d);
var div = document.getElementById('block');
div.innerHTML = naam;
});
所以我不确定我们做错了什么,因为函数本身可以正常工作,直到它返回到 html 页面。
【问题讨论】:
-
不应该
studentNr.equals(nummer)引发异常吗?.. Javascript String 对象没有equals函数。另外,您是否在returnData函数中的data变量中获得了有意义的值? -
@pckill 我在那里也不例外,除非电子表格本身将其保存为 int 值,但这似乎很奇怪。数据变量只是当前电子表格中的所有数据,它与数字一起传递给下一个函数。之后执行的函数可以正常工作,因为
Logger.log(array)在返回数组之前向我显示了我想要的数组。
标签: javascript jquery html arrays google-apps-script