質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

7219閲覧

【GAS】HtmlServiceの違い

aiueomaruta

総合スコア27

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/11/07 00:20

GAS

1 2function doGet() { 3 return HtmlService.createHtmlOutputFromFile('index'); 4} 5function doGet() { 6 return HtmlService.createTemplateFromFile('index').evaluate(); 7}

html

1 2<!DOCTYPE html> 3<html> 4 <head> 5 <base target="_top"> 6 </head> 7 <body> 8 <h1>あいうえおまるた</h1> 9 </body> 10</html> 11

これの違いを教えてください。
どっちでやっても同じものが表示されます!
あとcreateTemplateFromFile('index').evaluate();evaluate()についてもよくわかっていません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

createHtmlOutput~() 系は読み込んだデータからそのまま HtmlOutput を生成します。

対して、createTemplate~() 系は HtmlTemplate を生成します。HtmlTemplateはいわゆるテンプレートエンジンというやつで、外部から動的に値を埋め込んだり条件分岐やループを使用してコンテンツをサーバーサイドで動的に変更することができます。(HtmlTemplate.evaluate()を呼ぶことでHtmlOutputに変換します。)

HtmlTemplateでサーバーサイドで動作させる処理は<%%>の間に記述します。
<%= 変数 %>の様に記述することで変数の内容を直接出力させることもできます。

例えばこんな HTML があった場合に、createHtmlOutput~()createTemplate~()を使うケースを比べてみるといいでしょう。

HTML

1<!-- index.html --> 2<!DOCTYPE html> 3<html> 4 <head> 5 <base target="_top"> 6 </head> 7 <body> 8 <h1>タイトルは「<?= myTitle ?>」です。</h1> 9 <hr> 10 <p>ループカウントは <?= myLoopMax ?> です。</p> 11 <ul> 12 <? for(let i = 0; i < myLoopMax; i++) { ?> 13 <li>ループ <?= i ?></li> 14 <? } ?> 15 </ul> 16 <hr> 17 <p>おわり</p> 18 </body> 19</html>

JavaScript

1// Code.gs 2function doGet(e) { 3 // createTemplateFromFile を使う場合 4 const template = HtmlService.createTemplateFromFile("index"); 5 template.myTitle = "外部から設定したタイトル"; 6 template.myLoopMax = 10; 7 const output = template.evaluate(); 8 9 // createHtmlOutputFromFile を使う場合 10 //const output = HtmlService.createHtmlOutputFromFile("index"); 11 12 return output; 13}

投稿2020/11/07 01:35

draq

総合スコア2573

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aiueomaruta

2020/11/07 03:22 編集

ありがとうございます!<?とかよく見かけるので疑問に思っていました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問