gpt4 book ai didi

javascript - 将电子表格值返回给 JavaScript

转载 作者:行者123 更新时间:2023-12-03 06:26:47 24 4
gpt4 key购买 nike

我对 google script 和 javascript 的问题感到非常恼火。我在从 Google 脚本发送数据范围值以供 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] résultat de getSheetData(ss,sh) : Ligne,ID,Produit,Date,Fournisseur,Numéro Camion,Silo,Cellule,Ilot,Poids coop,Poids net livré,N° analyse qualité,Cellule destination ,Transport...

页面加载时,调用 listCommandesPesee,它又调用 readTb()。

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

JSON.Stringify 在我测试时以及添加 promise 和链之前正在工作(我确实认为)

因为我被困在这个问题上了。我将不胜感激任何帮助。

谢谢

最佳答案

使用 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);
};

关于javascript - 将电子表格值返回给 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38617434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com