[英]google apps script, send object from server to HTML template and javascript
我正在将数组 from.gs 代码发送到我的页面。html
If I parse my object directly in the HTML code, no problem, but if I try to put it in a javascript variable, using JSON.parse(), no chance.
我究竟做错了什么?
.GS 代码 doget()
var htmlTemplate = HtmlService.createTemplateFromFile('Index');
htmlTemplate.colors = colors;
htmlTemplate.jobs = extractDataFromSheet(approvedReal); <-- I can use in html
htmlTemplate.admin = adminFound;
htmlTemplate.approved = approvedReal;
return htmlTemplate.evaluate();
HTML 没问题,我可以根据需要构建我的 HTML 页面:
<? for(var row=0;row<jobs.length;row++){
var current = jobs[row];?>
<div class='row no-gutters'>
<?for(var col=0;col<current.length;col++){
var singleJob = current[col];
... so on
但是,如果我尝试将值放入 javascript var,则只获取字符串
<script>
var approved = <?= approvati ?>;
var newPostit = false;
var jobs0 = <?= JSON.stringify(jobs) ?>; <--see image-1
var jobs1 = <?= JSON.parse(jobs ) ?>; <--see image-2
........
有 3 种类型的脚本:
<?..?>
:没有 output 到 html<?=..?>
:输出数据,但将其转义以避免 xss 攻击<?.=.??>
:按原样输出数据。由于传递的数据是 json,因此您应该使用强制打印脚本。
根据最佳实践,加载 html 页面并动态拉入值以呈现它们。 请参见下面的示例:
<p>List of things:</p>
<ul id="things">
<li>Loading...</li>
</ul>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
// The code in this function runs when the page is loaded.
$(function() {
google.script.run.withSuccessHandler(showThings)
.getLotsOfThings();
});
function showThings(things) {
var list = $('#things');
list.empty();
for (var i = 0; i < things.length; i++) {
list.append('<li>' + things[i] + '</li>');
}
}
</script>
基于此,您的设置如下:
在您的后端:
function extractDataFromSheet( dataFromSheet ){
// this you already have
}
然后在前端调用后端 function 并处理响应:
function handleSuccess( dataFromSheet ){
var data = dataFromSheet;
// work with data here
}
// here we call the back-end function and tell it to run the function above
google.script.run
.withSuccessHandler(handleSuccess)
.extractDataFromSheet()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.