Javascript 无法返回数组[Google应用程序脚本]

Javascript 无法返回数组[Google应用程序脚本],javascript,jquery,html,arrays,google-apps-script,Javascript,Jquery,Html,Arrays,Google Apps Script,我们有个问题。我们现在的代码可以工作,但是我们无法让数组返回html页面。我们从html页面发送一个数字,然后出现returnData函数。当它运行时,它通过loopsheetGewoon,然后返回一个数组。数组返回returnData,函数以数组的returnal结束 问题是,当我们试图将数组放入html页面以便从电子表格中获取单个数据时,它返回未定义的数据。我们还尝试将javascript值传递给谷歌应用程序脚本代码,但没有成功 function loopSheetGewoon(data,

我们有个问题。我们现在的代码可以工作,但是我们无法让数组返回html页面。我们从html页面发送一个数字,然后出现returnData函数。当它运行时,它通过loopsheetGewoon,然后返回一个数组。数组返回returnData,函数以数组的returnal结束

问题是,当我们试图将数组放入html页面以便从电子表格中获取单个数据时,它返回未定义的数据。我们还尝试将javascript值传递给谷歌应用程序脚本代码,但没有成功

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;        
        }    
    }
}
下面是我们从html页面运行的函数。单击按钮时,它会向returnData函数(存储为字符串值)发送一个数字。它现在应该用数组填充变量d,但是它一直返回未定义的

$("#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;
});
$(“#oph”)。单击(函数ophalen(){
var s=$(“#numer”).val();
var displayEl=document.getElementById(“numer”);
var d=[];
警报;
d=google.script.run.returnData;
//对于(变量y=0;y
因此,我不确定我们做错了什么,因为函数本身工作正常,直到返回html页面为止

: 返回 void-此方法是异步的,不会 直接返回;但是,服务器端函数可以返回 值作为传递给成功处理程序的参数传递给客户端;也, 返回类型受与参数类型相同的限制, 只是表单元素不是合法的返回类型

你应该这样做:

var onSuccess = function(d){
    //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;
}

$("#oph").click(function ophalen(){
    var s = $("#nummer").val();
    var displayEl = document.getElementById("nummer");
    var d = [];
    alert(s);
    google.script.run.withSuccessHandler(onSuccess).returnData(s);
});
var onSuccess=函数(d){
//对于(变量y=0;y
不幸的是,google.script.run(截至2019年3月仍然有效)的一个文档限制是,您不能以任何方式传递日期对象,包括作为数组的一部分


您可以在一个范围上调用getDisplayValues()而不是getValues(),以仅获取一个字符串数组作为开始,也可以通过处理getValues()数组将日期对象转换为字符串。

不应
studentNr.equals(numer)
raiseexception?。。Javascript字符串对象没有
equals
函数。另外,在
returnData
函数中的
data
变量中是否有一个有意义的值?@pckill我也不例外,除非电子表格本身将其保存为int值,但这似乎很奇怪。数据变量就是当前电子表格中的所有数据,它将这些数据与数字一起传递给下一个函数。之后执行的函数工作正常,因为
Logger.log(array)
在返回数组之前向我显示了所需的数组。的可能副本似乎不起作用。Onclick发生时,函数正在运行,但似乎没有发出警报。如果将变量'var g=google.script.run.WithSuccessHandler(onSucces.returnData);',如果你提醒它,它将返回未定义。我不知道为什么它不起作用,引用我的话——“这个方法是异步的”。您的
g
变量应该是未定义的。你能检查chrome开发者工具中的网络选项卡来查看服务器的响应吗?
var onSuccess = function(d){
    //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;
}

$("#oph").click(function ophalen(){
    var s = $("#nummer").val();
    var displayEl = document.getElementById("nummer");
    var d = [];
    alert(s);
    google.script.run.withSuccessHandler(onSuccess).returnData(s);
});