[英]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.