Google Script Pass变量为模板化HTMLService

时间:2016-05-27 18:55:07

标签: google-apps-script google-apps

我有一个我作为网络应用发布的脚本。我想根据用于运行Web应用程序的URL更改默认设置。我已经打开了两种形式中的一种,但在一种形式上,我希望根据第二个传递的参数选择一个单选按钮。在服务器端gs文件中我有:

function doGet(passed) {

  switch(passed.parameter.form) {
    case 'single':
        var result = HtmlService.createTemplateFromFile('Single').evaluate();
        result.setHeight(550);
        result.setWidth(565);
        break;
    case 'grid':
    default:
        var result=HtmlService.createTemplateFromFile('GridView').evaluate();
        result.setHeight(550);
        result.setWidth(1285);
      }

  return result;
    }

在谷歌的HTML服务:模板化的HTML页面上有一个Pushing variables to templates部分似乎是我想要的,但我无法让它发挥作用。

在我的Single.html文件中我有:

      <body>
         <? if (data === "Ex") { ?> Existing <? } else { ?> New <? } ?>    
       ... </body>

上面的html部分过于简化,让它开始工作会让我走到尽头,这是一个更大的页面,带有输入区域等。

为了让“现有”显示在结果页面中,我已将上述代码更改为:

function doGet(passed) {

  switch(passed.parameter.form) {
    case 'single':
        var result = HtmlService.createTemplateFromFile('Single');
        result.setHeight(550);
        result.setWidth(565);
        result.data = 'Ex';
        return result.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
        break;
    case 'grid':
    default:
        var result=HtmlService.createTemplateFromFile('GridView').evaluate();
        result.setHeight(550);
        result.setWidth(1285);

        return result;
      }

    }

并获得错误

  

TypeError:在对象HtmlTemplate中找不到函数setHeight。 (第131行,文件“代码”)

即使我删除了setHeight和setWidth导致只有上面引用页面上显示的数据,我也会收到错误。

有没有人将变量传递给这样的页面?

1 个答案:

答案 0 :(得分:1)

看起来方法调用的顺序错误。 result.data = 'Ex';应该在.evaluate()之前,但之后必须应用.setHeight().setWidth()。稍微修改你的上一个例子:

case 'single':
        var result = HtmlService.createTemplateFromFile('Single');
        result.data = 'Ex';

        return result.evaluate()
                     .setHeight(550)
                     .setWidth(565)
                     .setSandboxMode(HtmlService.SandboxMode.IFRAME);
        break;

我在HTML文件中的if语句之后将基本错误跟踪到了错过}。代码应如下所示:

<? if (data === "Ex") { ?> Existing <? } else { ?> New <? } ?>