Class HtmlOutput

HtmlOutput

スクリプトから提供可能な HtmlOutput オブジェクト。セキュリティ上の考慮事項により、スクリプトが HTML をブラウザに直接返すことはできません。その代わりに、悪意のあるアクションを実行できないようにサニタイズする必要があります。次のようにサニタイズされた HTML を返すことができます。

function doGet() {
  return HtmlService.createHtmlOutput('<b>Hello, world!</b>');
}
HtmlOutput のコードには、埋め込み JavaScript と CSS を含めることができます。(これは DOM を操作する標準のクライアント側 JavaScript であり、Apps Script ではありません)。こうしたコンテンツはすべて、iframe のサンドボックス化によってサンドボックス化されています。詳しくは、HTML サービスの制限に関するガイドをご覧ください。

Methods

メソッド戻り値の型概要
addMetaTag(name, content)HtmlOutputページにメタタグを追加します。
append(addedContent)HtmlOutputこの HtmlOutput のコンテンツに新しいコンテンツを追加します。
appendUntrusted(addedContent)HtmlOutputコンテキストに応じたエスケープを使用して、この HtmlOutput のコンテンツに新しいコンテンツを追加します。
asTemplate()HtmlTemplateこの HtmlOutput に基づく HtmlTemplate を返します。
clear()HtmlOutput現在のコンテンツを消去します。
getAs(contentType)Blobこのオブジェクト内のデータを、指定されたコンテンツ タイプに変換された blob として返します。
getBlob()Blobこのオブジェクト内のデータを blob として返します。
getContent()Stringこの HtmlOutput のコンテンツを取得します。
getFaviconUrl()StringsetFaviconUrl(iconUrl) を呼び出して、ページに追加されたファビコン リンクタグの URL を取得します。
getHeight()IntegerGoogle ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の高さを取得します。
getMetaTags()HtmlOutputMetaTag[]addMetaTag(name, content) を呼び出してページに追加されたメタタグを表すオブジェクトの配列を取得します。
getTitle()String出力ページのタイトルを取得します。
getWidth()IntegerGoogle ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の幅を取得します。
setContent(content)HtmlOutputこの HtmlOutput のコンテンツを設定します。
setFaviconUrl(iconUrl)HtmlOutputファビコンのリンクタグをページに追加します。
setHeight(height)HtmlOutputGoogle ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の高さを設定します。
setSandboxMode(mode)HtmlOutputこのメソッドは機能しなくなりました。以前は、クライアント側のスクリプトに使用される sandbox mode が設定されていました。
setTitle(title)HtmlOutput出力ページのタイトルを設定します。
setWidth(width)HtmlOutputGoogle ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の幅を設定します。
setXFrameOptionsMode(mode)HtmlOutputクリックジャッキングの防止を制御する、ページの X-Frame-Options ヘッダーの状態を設定します。

詳細なドキュメント

addMetaTag(name, content)

ページにメタタグを追加します。Apps Script の HTML ファイルに直接含まれているメタタグは無視されます。次のメタタグのみを使用できます。

<meta name="apple-mobile-web-app-capable" content="..."/>
<meta name="google-site-verification" content="..."/>
<meta name="mobile-web-app-capable" content="..."/>
<meta name="viewport" content="..."/>
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.addMetaTag('viewport', 'width=device-width, initial-scale=1');

パラメータ

名前説明
nameStringメタタグの name 属性の値。
contentStringメタタグの content 属性の値。

リターン

HtmlOutput - この出力(チェーンの場合)。


append(addedContent)

この HtmlOutput のコンテンツに新しいコンテンツを追加します。エスケープされないため、信頼できるソースからのコンテンツにのみ使用します。

// Log "<b>Hello, world!</b><p>Hello again, world.</p>"
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.append('<p>Hello again, world.</p>');
Logger.log(output.getContent());

パラメータ

名前説明
addedContentString追加するコンテンツ。

リターン

HtmlOutput - この出力(チェーンの場合)。

例外

Error - HTML の形式が正しくない場合

関連ドキュメント


appendUntrusted(addedContent)

コンテキストに応じたエスケープを使用して、この HtmlOutput のコンテンツに新しいコンテンツを追加します。

このメソッドは、HtmlOutput の現在の状態に基づいてコンテンツを正しくエスケープするため、マークアップや副作用のない安全な文字列になります。これは、信頼できないソース(ユーザーなど)からコンテンツを追加するときに使用する代わりに、追加したコンテンツまたはマークアップが原因で予期しないコード実行を引き起こすクロスサイト スクリプティング(XSS)バグを誤って許可しないようにするために使用します。

// Log "<b>Hello, world!</b>&lt;p&gt;Hello again, world.&lt;/p&gt;"
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.appendUntrusted('<p>Hello again, world.</p>');
Logger.log(output.getContent());

パラメータ

名前説明
addedContentString追加するコンテンツ。

リターン

HtmlOutput - この出力(チェーンの場合)。

例外

Error - HTML が非常に不適切な場合

関連ドキュメント


asTemplate()

この HtmlOutput に基づく HtmlTemplate を返します。この方法では、テンプレートを段階的に作成できます。今後、HtmlOutput を変更すると、HtmlTemplate の内容も影響を受けます。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
var template = output.asTemplate();

リターン

HtmlTemplate - 新しい HtmlTemplate


clear()

現在のコンテンツをクリアします。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.clear();

リターン

HtmlOutput - この出力(チェーンの場合)。


getAs(contentType)

このオブジェクト内のデータを、指定されたコンテンツ タイプに変換された blob として返します。この方法では、ファイル名に適切な拡張子(「myfile.pdf」など)が追加されます。ただし、ファイル名の最後のピリオド(存在する場合)に続く部分は、置き換えられる既存の拡張子であることを前提としています。この結果、「ShoppingList.12.25.2014」は「ShoppingList.12.25.pdf」になります。

コンバージョンの 1 日あたりの割り当てを確認するには、Google サービスの割り当てをご覧ください。新しく作成された Google Workspace ドメインには、一時的に割り当てが厳しくなることがあります。

パラメータ

名前説明
contentTypeString変換先の MIME タイプ。ほとんどの blob では、有効なオプションは 'application/pdf' のみです。BMP、GIF、JPEG、PNG 形式の画像の場合は、'image/bmp''image/gif''image/jpeg''image/png' のいずれかも有効です。

リターン

Blob - blob としてのデータ。


getBlob()

このオブジェクト内のデータを blob として返します。

リターン

Blob - blob としてのデータ。


getContent()

この HtmlOutput のコンテンツを取得します。

// Log "<b>Hello, world!</b>"
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
Logger.log(output.getContent());

リターン

String - 配信されるコンテンツ。


getFaviconUrl()

setFaviconUrl(iconUrl) を呼び出して、ページに追加されたファビコン リンクタグの URL を取得します。Apps Script の HTML ファイルに直接含まれているファビコンのリンクタグは無視されます。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setFaviconUrl('http://www.example.com/image.png');
Logger.log(output.getFaviconUrl());

リターン

String - ファビコン画像の URL。


getHeight()

Google ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の高さを取得します。HtmlOutput がウェブアプリとして公開されている場合、このメソッドは null を返します。すでに開いているダイアログのサイズを変更するには、クライアント側のコードで google.script.host.setHeight(height) を呼び出します。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setHeight(200);
Logger.log(output.getHeight());

リターン

Integer - 高さ(ピクセル単位)。


getMetaTags()

addMetaTag(name, content) を呼び出してページに追加されたメタタグを表すオブジェクトの配列を取得します。Apps Script の HTML ファイルに直接含まれているメタタグは無視されます。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.addMetaTag('viewport', 'width=device-width, initial-scale=1');

var tags = output.getMetaTags();
Logger.log('<meta name="%s" content="%s"/>', tags[0].getName(), tags[0].getContent());

リターン

HtmlOutputMetaTag[] - addMetaTag(name, content) を呼び出してページに追加されたメタタグを表すオブジェクトの配列。


getTitle()

出力ページのタイトルを取得します。HTML 要素 <title> は無視されます。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
Logger.log(output.getTitle());

リターン

String - ページのタイトル。


getWidth()

Google ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の幅を取得します。HtmlOutput がウェブアプリとして公開されている場合、このメソッドは null を返します。すでに開いているダイアログのサイズを変更するには、クライアント側のコードで google.script.host.setWidth(width) を呼び出します。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setWidth(200);
Logger.log(output.getWidth());

リターン

Integer - 幅(ピクセル単位)。


setContent(content)

この HtmlOutput のコンテンツを設定します。

var output = HtmlService.createHtmlOutput();
output.setContent('<b>Hello, world!</b>');

パラメータ

名前説明
contentString配信するコンテンツ。

リターン

HtmlOutput - この出力(チェーンの場合)。

例外

Error - HTML の形式が正しくない場合


setFaviconUrl(iconUrl)

ファビコンのリンクタグをページに追加します。Apps Script の HTML ファイルに直接含まれているファビコン リンクタグは無視されます。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setFaviconUrl('http://www.example.com/image.png');

パラメータ

名前説明
iconUrlStringファビコン画像の URL。画像の拡張子は画像の種類を示します。

リターン

HtmlOutput - この出力(チェーンの場合)。


setHeight(height)

Google ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の高さを設定します。代わりに HtmlOutput がウェブアプリとして公開されている場合、このメソッドは効力がありません。すでに開いているダイアログのサイズを変更するには、クライアント側のコードで google.script.host.setHeight(height) を呼び出します。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setHeight(200);

パラメータ

名前説明
heightInteger新しい高さ(ピクセル単位)。null の場合はデフォルト値になります。

リターン

HtmlOutput - この出力(チェーンの場合)。


setSandboxMode(mode)

このメソッドは機能しなくなりました。以前は、クライアント側のスクリプトに使用される sandbox mode が設定されていました。悪意のある HTML または JavaScript の配信からユーザーを保護するため、HTML サービスから提供されるクライアントサイドのコードは、コードに制限を課すセキュリティ サンドボックスで実行されます。元々この方法では、スクリプト作成者がサンドボックスのさまざまなバージョンから選択できましたが、現在はサンドボックス モードの設定に関係なく、すべてのスクリプトで IFRAME モードが使用されるようになりました。詳しくは、HTML サービスの制限に関するガイドをご覧ください。

IFRAME モードは、他のサンドボックス モードよりも制限が大幅に少なく、高速に実行されますが、Internet Explorer 9 などの一部の古いブラウザではまったく機能しません。サンドボックス モードは、クライアント側のスクリプトで google.script.sandbox.mode を調べることで読み取ることができます。このプロパティはクライアント上の実際のモードを返しますが、リクエストされたモードがユーザーのブラウザでサポートされていない場合、サーバーでリクエストされたモードとは異なる場合があります。

<!-- Read the sandbox mode (in a client-side script). -->
<script>
  alert(google.script.sandbox.mode);
</script>

パラメータ

名前説明
modeSandboxMode使用するサンドボックス モード。

リターン

HtmlOutput - この出力(チェーンの場合)。


setTitle(title)

出力ページのタイトルを設定します。ウェブアプリの場合はページ全体のタイトル、Google スプレッドシートに表示される HtmlOutput の場合はダイアログのタイトルです。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setTitle('My First Page');

パラメータ

名前説明
titleString新しいタイトル。

リターン

HtmlOutput - この出力(チェーンの場合)。


setWidth(width)

Google ドキュメント、スプレッドシート、フォームのカスタム ダイアログの初期の幅を設定します。代わりに HtmlOutput がウェブアプリとして公開されている場合、このメソッドは効力がありません。すでに開いているダイアログのサイズを変更するには、クライアント側のコードで google.script.host.setWidth(width) を呼び出します。

var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setWidth(200);

パラメータ

名前説明
widthIntegerピクセル単位の新しい幅です。null の場合はデフォルト値になります。

リターン

HtmlOutput - この出力(チェーンの場合)。


setXFrameOptionsMode(mode)

クリックジャッキングの防止を制御する、ページの X-Frame-Options ヘッダーの状態を設定します。

XFrameOptionsMode.ALLOWALL を設定すると、どのサイトもページの iframe を使えるようになるため、デベロッパーはクリックジャッキングに対する独自の保護を実装する必要があります。

スクリプトが X-Frame-Options モードを設定しない場合、Apps Script はデフォルトで XFrameOptionsMode.DEFAULT モードを使用します。

// Serve HTML with no X-Frame-Options header (in Apps Script server-side code).
var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

パラメータ

名前説明
modeXFrameOptionsMode設定する XFrame オプション モード。

リターン

HtmlOutput - この出力(チェーンの場合)。