以下是我试图评估的模板:
<div class='block'>
<h4> Info </h4>
<input type="text" value='<?= exampleId || "" ?>' id="example-id">
<br>
<label for="name">Name</label>
<input type='text' id='name' value='<?= name || "" ?>'>
</div>
我跑:
HtmlService.createTemplateFromFile('Index').evaluate()
这行代码崩溃,引用错误如下所示。
在我的模板中,我试图使用OR语句,例如:
<?= exampleId || "" ?>
我收到错误消息,指出找不到引用错误exampleId
。
不会exampleId
评估为&#34;未定义&#34;?
例如:
var someObj = {};
somObj.exampleId // ===> undefined
someObj.examplId || 'hello world' // ===> 'hello world'
为什么模板不评估表达式?
答案 0 :(得分:1)
来自文档:
在scriptlet中,您可以编写任何可在普通Apps脚本文件中使用的代码:
如果此代码在代码编辑器中运行:
function test() {
return exampleId || "";
}
function runThis() {
Logger.log(test())
}
它会产生错误。
唯一的方法:
<?= exampleId || "" ?>
如果将exampleId
声明为全局变量,将起作用。
var exampleId;//Declared outside of any function block
回到示例,即使有未定义的测试:
if (exampleId===undefined) {return ""};
代码编辑器中仍然存在错误。
因此,它不会在代码编辑器中运行。
我想测试它是否会在浏览器中运行:
<script>
exampleId || "";
</script>
在控制台中产生错误。