GoogleApps脚本,将对象从服务器发送到HTML模板和javascript
我正在从.gs代码向我的page.html发送一个数组GoogleApps脚本,将对象从服务器发送到HTML模板和javascript,javascript,google-apps-script,Javascript,Google Apps Script,我正在从.gs代码向我的page.html发送一个数组 如果我直接在HTML代码中解析我的对象,没有问题,但是如果我尝试使用JSON.parse()将其放入javascript变量中,就没有机会了 我做错了什么 .GS代码doget() var htmlTemplate=HtmlService.createTemplateFromFile('Index'); htmlTemplate.colors=颜色; htmlTemplate.jobs=从工作表中提取数据(approvedReal); va
如果我直接在HTML代码中解析我的对象,没有问题,但是如果我尝试使用JSON.parse()将其放入javascript变量中,就没有机会了 我做错了什么 .GS代码doget()
var htmlTemplate=HtmlService.createTemplateFromFile('Index');
htmlTemplate.colors=颜色;
htmlTemplate.jobs=从工作表中提取数据(approvedReal);
var newposit=false;
var-jobs0= 共有3种类型:
- 标准:
:无html输出
- 打印:
:输出数据,但转义数据以避免xss攻击
- 强制打印:
:按原样输出数据
因为传递的数据是json,所以应该使用强制打印scriplets。根据最佳实践,动态加载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 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()
似乎使用JQUERY,我使用var jobs0=$.parseJSON()获取我的值-->的方法代码>我得到了我的结果我在HTML解析模板中得到了ZautoescZ输出,不知道“强制打印”设置无法逃避我发送到模板的内容:)谢谢。
<script>
var approved = <?= approvati ?>;
var newPostit = false;
var jobs0 = <?= JSON.stringify(jobs) ?>; <--see image-1
var jobs1 = <?= JSON.parse(jobs ) ?>; <--see image-2
........
<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 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()