Google 脚本将变量传递给模板化的 HTMLService
Google Script Pass variable to templated HTMLService
我有一个已发布为网络应用程序的脚本。我想根据用于 运行 网络应用程序的 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;
}
在 Google 的 HTML 服务:模板化 HTML 页面上有一个部分 Pushing variables to templates 这似乎是我想要的但我无法得到它上班。
在我的 Single.html 文件中我有:
<body>
<? if (data === "Ex") { ?> Existing <? } else { ?> New <? } ?>
... </body>
上面的 html 部分过于简单,让它工作会让我结束,这是一个更大的页面,带有输入区域等。
为了让 "Existing" 显示在结果页面中,我将上面的代码更改为:
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: Cannot find function setHeight in object HtmlTemplate. (line 131, file "Code")
即使我删除了 setHeight 和 setWidth 导致只有上述参考页面上显示的数据,我也会收到错误。
有没有人像这样将变量传递给页面?
看起来方法调用的顺序有误。 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 <? } ?>
我有一个已发布为网络应用程序的脚本。我想根据用于 运行 网络应用程序的 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;
}
在 Google 的 HTML 服务:模板化 HTML 页面上有一个部分 Pushing variables to templates 这似乎是我想要的但我无法得到它上班。
在我的 Single.html 文件中我有:
<body>
<? if (data === "Ex") { ?> Existing <? } else { ?> New <? } ?>
... </body>
上面的 html 部分过于简单,让它工作会让我结束,这是一个更大的页面,带有输入区域等。
为了让 "Existing" 显示在结果页面中,我将上面的代码更改为:
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: Cannot find function setHeight in object HtmlTemplate. (line 131, file "Code")
即使我删除了 setHeight 和 setWidth 导致只有上述参考页面上显示的数据,我也会收到错误。
有没有人像这样将变量传递给页面?
看起来方法调用的顺序有误。 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 <? } ?>