首页 > 解决方案 > 谷歌应用脚​​本,将对象从服务器发送到 HTML 模板和 javascript

问题描述


我正在从.gs代码向我的 page.html 发送一个数组数组没有机会。

我究竟做错了什么?

.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
........

jobs0包含您在图像中看到的内容,但无法将其转换回我的对象​​并使用它: 在此处输入图像描述

jobs1是对象但不能提取数组,如果我使用jobs1[0]我没有数组,但 char 'V' 在此处输入图像描述

标签: javascriptgoogle-apps-script

解决方案


有 3 种类型的脚本

  • 标准::<?..?>没有输出到 html
  • 打印: <?=..?>: 输出数据,但将其转义以避免 xss 攻击
  • 强制打印:<?!=..?>:按原样输出数据。

由于传递的数据是 json,因此您应该使用强制打印脚本。


推荐阅读