LoginSignup
0
0

More than 1 year has passed since last update.

GASのHtmlService.createTemplateFromFile(template).evaluate()は何をしているのか

Posted at

Google App ScriptのHtmlService.createTemplateFromFile(template).evaluate()は何をしているのか

まずはじめに

GoogleApp Script(以降GAS)でHTMLファイルを表示させる際に記載する「HtmlService.createTemplateFromFile(template).evaluate();」という長い式みたいなもの。「とりあえずこれを書けばHTMLが表示される」という認識で使っている人も多いと思います。私も最初は「HTMLファイルを表示してくれる魔法の文」と思って使用していました。それが嫌で今回はその魔法の文の正体を、自分なりに調べてまとめてみたので、備忘録がてら書いていきます。

分解してみる

まずは長い式みたいなものを分解して細かくみていきましょう。
HtmlService.createTemplateFromFile(template).evaluate()は
・HtmlService
・createTemplateFromFile(引数)
・evaluate()
の3つに分けることができます。

あえてその長いコードを日本語で表すなら、「HtmlServiceクラスがもつcreateTemplateFromFile()メソッドが呼び出され、その戻り値のオブジェクトがもつevaluate()メソッドを呼び出す」というような感じになります。

ではその1つ1つをみていきましょう。

HtmlService

これは

スクリプトからHTMLやその他コンテンツを返すためのサービス

参考:https://developers.google.com/apps-script/reference/html/html-service

です。「Webページを作成するための機能たちを提供するもの」と考えればよいでしょう。

createTemplateFromFile(引数)

コードエディタのファイルから新しい HtmlTemplate オブジェクトを作成するメソッド

参考:https://developers.google.com/apps-script/reference/html/html-service#createHtmlOutput(String)

です。引数にHTMLのファイル名を記述することによって、HtmlTemplateオブジェクトといわれるものを作成します。
このHtmlTemplateオブジェクトというのはHTMLを動的に生成するためのオブジェクトだと思っていただければよいです。

evaluate()

簡単に書くと

HtmlOutput オブジェクトを返すメソッド

です。HtmlOutputオブジェクトとは何かといいますと、GASの公式ホームページによると、

セキュリティ上の考慮事項により、スクリプトでは、HTML をブラウザにそのまま返すことはできません。その代わりに、悪意のあるアクションを実行できないようにサニタイズする必要があります

参考:https://developers.google.com/apps-script/reference/html/html-output

と書いてありました。つまりHtmlOutputオブジェクトとは「HTMLをブラウザにはそのまま表示出来ないからサニタイズされたものが入っている」と思えばよいでしょう。(サニタイズについては各自でお調べください)

まとめると

HtmlService.createTemplateFromFile(template).evaluate()の大まかな処理の意味としては、
「HtmlServiceクラス」にある「createTemplateFromFileメソッド」を呼び出し、「HTMLを動的に生成するオブジェクト」を作成し、そのままではHTMLを表示出来ないので「evaluateメソッドでサニタイズ」して表示する、になります。

最後に

ここまでみてきましたが、長くて複雑そうなものは、細分化して一つ一つをチェックし、最後に組み合わせると、案外何をしているかわかったりもします。以上備忘録でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0