悪意のある HTML や JavaScript からユーザーを保護するため、HTML サービスでは iframe を使用して、Google ドキュメント、Google スプレッドシート、Google フォームのウェブアプリやカスタム ユーザー インターフェースをサンドボックス化します。メールの本文の生成など、他の状況ではサンドボックスは使用されません。サンドボックスでは、クライアントサイド コードに制限が課されます。
サンドボックス モード
IFRAME を除き、すべてのサンドボックス モードは提供終了となります。以前に NATIVE モードまたは EMULATED モードを使用していたアプリは、自動的に IFRAME モードを使用するようになります。古いモードでスクリプトを開発した場合は、
移行手順に沿って適切に動作するようにしてください。
setSandboxMode
メソッドは、呼び出しても効果がなくなりました。
IFRAME モードの制限事項
IFRAME サンドボックス モードは、HTML5 の
iframe サンドボックス機能
に基づいており、次のキーワードを使用します。
allow-same-originallow-formsallow-scriptsallow-popupsallow-downloadsallow-modalsallow-popups-to-escape-sandboxallow-top-navigation-by-user-activation- この属性は、 スタンドアロン スクリプト プロジェクトにのみ設定されます。
コンテンツが最上位のブラウジング コンテキストに移動できるようにする allow-top-navigation キーワードは制限されており、サンドボックスの属性として設定されません。スクリプトをリダイレクトする必要がある場合は、ユーザーが操作できるリンクまたはボタンを追加してください。
リンクのターゲット属性を設定する
IFRAME モードでは、リンクのターゲット属性を _top または _blank に設定する必要があります。
Code.js
function doGet() {
var template = HtmlService.createTemplateFromFile('top');
return template.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
top.html
<!DOCTYPE html>
<html>
<body>
<div>
<a href="http://google.com" target="_top">Click Me!</a>
</div>
</body>
</html>
この属性は、囲みウェブページの head
セクション内の <base> タグを使用してオーバーライドすることもできます。
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<a href="http://google.com">Click Me!</a>
</div>
</body>
</html>
アクティブ コンテンツには HTTPS が必要
スクリプト、外部スタイルシート、XmlHttpRequests などの 「アクティブ」 コンテンツは、HTTP ではなく HTTPS で読み込む必要があります。