GASの覚書です。
Contents
GASのスクリプトレットとは?
スクリプトレットとは、HTML内でGoogle Apps Scriptのコードを動的に実行するためのものです。JSのコードをHTML内に直接記述することもできます。
スポンサーリンク
GASのincludeでスクリプトレットが使えない!?(htmlファイル)
GASでスクリプトレットを使いたいのに、そのままコードが表示されてしまう症状に一時悩みました。
createTemplateFromFileとcreateHtmlOutputFromFileの比較
原因はポップアップの方にありました。
// const html = HtmlService.createHtmlOutputFromFile('popup.html')
const html = HtmlService.createTemplateFromFile('popup.html').evaluate()
.setWidth(300)
.setHeight(500);
createHtmlOutputFromFile
と createTemplateFromFile
の2つの方法がありますが、スクリプトレットや include
関数を使用する場合は createTemplateFromFile
を使って .evaluate()
を呼び出す必要があります。
ポイントとしては
createHtmlOutputFromFile
: 単にHTMLをそのまま表示する。createTemplateFromFile
: Google Apps Scriptと連携するためのテンプレートを作成する。
JSやCSS、SVGを外部ファイル化する可能性もあるため、 createTemplateFromFile
を使った方が不要なトラブルに巻き込まれない気がしました。
- テンプレート機能:
createTemplateFromFile
: スクリプト変数を埋め込むことができる(<?= variable ?>
構文)createHtmlOutputFromFile
: 単純にHTMLを取得するだけ
- 用途の違い:
createTemplateFromFile
: 動的にコンテンツを生成する場合に適しているcreateHtmlOutputFromFile
: 静的なHTMLを取得する場合に適している
スポンサーリンク
GASのhtmlファイルを取得する
サーバーサイドに次のようなコードを書きます。
HtmlService.createTemplateFromFile(filename).getRawContent();
このメッセージの未加工のコンテンツを取得します。
https://developers.google.com/apps-script/reference/gmail/gmail-message?hl=ja#getRawContent()
Rawは生ですね。
次の方法は取得時にhtmlファイルに記載のコメントが全部消えてうまくいきませんでしたね…。
// この方法はコメントが消えましたね。
const content = HtmlService.createTemplateFromFile(fileName).evaluate().getContent();
コメント