如何使用 stylesheet.html 实施 Google Apps 脚本最佳实践?

How do I implement Google Apps Script best practices using stylesheet.html?

我正在学习“HTML Service: Best Practices

并且我想在我的样式中引入变量。如果我将我的样式放在 page.html 中,我知道如何引入它们,但在尝试使用 Google 提出的 "HTML Service: Best Practices" 示例时运气不佳。

我的破page.html长得像

<? var data = getData(); ?>
<?!= include('Stylesheet'); ?>

<br />
<div id="title"><?= data.myTitle ?></div>
<div id="thanksMessage">
<p><?= data.myText ?></p>
</div>
<p>More text</p>

我的破Stylesheet.html长得像

<style>
<? var data = Code.gs.getData(); ?>
@tcolor: #4D926F;
@tcolor2: <?= data.myTitleColorValue ?>;

p {
  color: #da0202;
}

#thanksMessage {
  font-size: 1.5em;
  line-height: 50%;
  color: #da0202;  
}

#title {
  font-size: 3.3em;
  line-height: 50%;
  color: <?= data.myTitleColorValue ?>;
  text-align: left;
  font-weight: bold;
  margin: 0px;
  margin-bottom: 10px;
}
</style>

我的作品Code.gs看起来像

  function doGet(request) {
  return HtmlService.createTemplateFromFile('page')
      .evaluate();
}

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .getContent();
}

    function getData() {
     var myValues = {}; 
     myValues["myTitleColorValue"] = "#da0202"  
     myValues["myTitle"] = "Hello Friends"  
     myValues["myText"] = "Thank-you for your help!"  
     return myValues;
    };

所以我通过将 'styles' 带入 page.html 来实现它

<? var data = getData(); ?>
<style>
p {
  color: #da0202;
}

#thanksMessage {
  font-size: 1.5em;
  line-height: 50%;
  color: #da0202;  
}

#title {
  font-size: 3.3em;
  line-height: 50%;
  c/olor: #da0202;
  c/olor: @tcolor;
  color: <?= data.myTitleColorValue ?>;
  text-align: left;
  font-weight: bold;
  margin: 0px;
  margin-bottom: 10px;
}
</style>
<br />
<div id="title"><?= data.myTitle ?></div>
<div id="thanksMessage">
<p><?= data.myText ?></p>
</div>
<p>More text</p>

我希望有人能帮我看看我的错误。

此致,

克里斯

您的 include() 函数当前如下所示:

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .getContent();
}

我用这个:

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
};

我会删除沙盒模式方法,看看是否可行。实际上,沙盒方法应该在您的 doGet() 函数中。

我刚刚注意到您的 Stylesheet.html 文件中有 scriptlet。我会把它们放在你的主 page.html 文件中。