【发布时间】:2021-07-15 15:14:22
【问题描述】:
我有一个服务器端代码。
然后是客户端 javascript 和使用引导程序制作的 html 页面。
我面临的问题是文档在服务器端返回值之前加载。
这是我的服务器端代码
编辑:您必须在这里指客户端
document.addEventListener('DOMContentLoaded', function() {
google.script.run.withSuccessHandler(fetchdata).datafetch();
});
function fetchdata(dataArray)
{
let tbody = document.getElementById('perf1');
for (var i=0; i<dataArray.length;i++)
{
var row = document.createElement("tr")
row.setAttribute("style","height:2px;")
for (var j=0; j<dataArray[i].length; j++)
{
var col = document.createElement("td")
if (j==0)
{
col.innerText = dataArray[i][j]
}
row.appendChild(col)
}
tbody.appendChild(row);
}
}
这是服务器端代码:
function datafetch()
{
var ss2 = SpreadsheetApp.openById('xxxxxx');
var sheet = ss2.getSheetByName('Video');
var email = Session.getActiveUser().getEmail();
email = email.replace(/@gmail.com/g, "")
var lrow = sheet.getLastRow();
var a = sheet.getRange("A1:A"+lrow).getValues();
a=a.filter(String)
var data = sheet.getRange("A2:R"+a.length).getValues();
var data1 = data.filter(function(item){return item[9] == email}).map(elem => elem[0]);
data1.flat();
Logger.log(data1)
return data1;
}
我正在尝试从我从谷歌表中获取的数据中加载一个表,但它返回空数组。在服务器端,我可以看到日志和数组有值。但在客户端它显示为空。
【问题讨论】:
-
您可以使用 JavaScript fetch API 从服务器获取数据,然后对返回的数据运行
withSuccessHandler方法。 -
我的代码有什么问题吗?
-
“在服务器端返回值之前以某种方式加载了文档” - 为什么你的代码会做其他事情?
-
@goldenbanana42 这不是他要求的
-
@Cooper 我只是想了解他预期会发生什么。
标签: javascript html google-apps-script web-applications