将电子表格值返回到javascript

Return spreadsheet values to javascript

本文关键字:javascript 返回 电子表格      更新时间:2023-09-26

我对谷歌脚本和javascript的问题很恼火。我有一个问题,从我的谷歌脚本发送数据范围值,由我的javascript函数处理。

这是我的密码。

code.gs摘录:

function getSheetData(ss,sh){
    // Create sheet object
    var ass = SpreadsheetApp.openById(ss);
    SpreadsheetApp.setActiveSpreadsheet(ass);
    var ash = SpreadsheetApp.openById(ss).getSheetByName(sh);
    ash = SpreadsheetApp.getActive();
    var result = ash.getDataRange().getValues();
    Logger.log("getSheetData(ss,sh) result : "+result);
    // return result after JSON strinfigy
    return JSON.stringify(result);
}

JavaScript.html摘录:

function readTb(fn) {
    var result = google.script.run.getSheetData(bdData, tbData);
    console.dir('readTb result : ' + result);
    fn(result);
}
function buildSelect(range) {
    console.log('Range = ');
    console.dir(range);
    if (range.length > 0) {
        buildOption('', 'Choose an order');
        for (i = 0; i < range.length; i++) {
            var row = range[i];
            buildOption(row[0], row[0] + " ~ " + row[2] + " ~ " + row[5]
                    + " ~ " + row[7]);
        }
    } else {
        buildOption('', 'No order to display');
    }
}
function buildOption(data) {
    console.log(data);
}
/**
 /* Retrieve orders and format to fill select numCommande input
 /*
 */
function listCommandesPesee() {
    console.log('Call for orders seeking');
    // Read DB and retrieve data
    // feed function variables with CONST
    bdData = BDDATA_OLD;
    tbData = TBCOMMANDES;
    // Call readTb to retrieve data, then buildSelect to format result
    var promise1 = new Promise(readTb);
    promise1.then(buildSelect);
    console.dir(promise1);
}

到目前为止,GS IDE中的Logger.log显示正确的数据:

[16-07-27 08:01:22:040 PDT]getSheetData(ss,sh):Ligne,ID,Produit,Date,Fournisseur,Numéro Camion,Silo,Cellule,Ilot,Poids coop,Poids net livré,N°analysis qualité,Cellule destination,Transport。。。

在页面加载时,会调用listCommandsPeee,它会调用readTb()。

但即使使用json-stringify,我在var结果(readTb函数)中仍然有一个未定义的值,因此buildSelect中的range没有任何长度属性。

JSON。Stringify在我测试时正在工作,在我添加promise和chain之前(我确实认为)

因为我陷入了困境。如果有任何帮助,我将不胜感激。

感谢

来自服务器的返回不能由使用google.script.run的同一函数接收。

目前:

function readTb(fn) {
    var result = google.script.run.getSheetData(bdData, tbData);
    console.dir('Résultat de lecture des données : ' + result);
    fn(result);
}

应为:

function readTb() {
  var result = google.script.run
    .withSuccessHandler(mySuccessFnc)
    .getSheetData(bdData, tbData);
}
function mySuccessFnc(resultReturned) {
    console.dir('Résultat de lecture des données : ' + resultReturned);
};