createhtmloutputfromfile!GASのincludeでスクリプトレットが使えない!?

GASの覚書です。

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);

createHtmlOutputFromFilecreateTemplateFromFile の2つの方法がありますが、スクリプトレットや include 関数を使用する場合は createTemplateFromFile を使って .evaluate() を呼び出す必要があります。

ポイントとしては

  • createHtmlOutputFromFile: 単にHTMLをそのまま表示する。
  • createTemplateFromFile: Google Apps Scriptと連携するためのテンプレートを作成する。

JSやCSS、SVGを外部ファイル化する可能性もあるため、 createTemplateFromFile を使った方が不要なトラブルに巻き込まれない気がしました。

  1. テンプレート機能:
    • createTemplateFromFile: スクリプト変数を埋め込むことができる(<?= variable ?>構文)
    • createHtmlOutputFromFile: 単純にHTMLを取得するだけ
  2. 用途の違い:
    • 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();
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする