簡體   English   中英

無法返回數組[Google apps腳本]

[英]Unable to return Array [Google apps script]

我們出現了問題。 我們現在擁有的代碼可以使用,但是我們無法使數組返回到html頁面。 我們從html頁面發送一個數字,然后發生returnData函數。 進行時,它通過loopsheetGewoon,然后返回一個數組。 數組返回returnData,函數以數組的返回值結束。

問題是,當我們嘗試將數組獲取到html頁面以便可以從電子表格中獲取單個數據時,它返回未定義的數據。 我們也嘗試過將JavaScript值傳遞給Google Apps腳本代碼,但這沒有用。

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,但是它始終返回未定義狀態。

$("#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頁面為止。

不幸的是,google.script.run的記錄限制之一(自2019年3月起仍然有效)是您不能以任何方式(包括作為數組的一部分)傳遞Date對象。

您可以在某個范圍內調用getDisplayValues()而不是getValues()以僅獲取開始的字符串數組,也可以通過處理getValues()數組將Date對象轉換為String。

google.script.run :返回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);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM