HTML サービス: 制限

悪意のある HTML や JavaScript からユーザーを保護するため、HTML サービスでは iframe を使用して、Google ドキュメント、Google スプレッドシート、フォームのウェブアプリやカスタム ユーザー インターフェースをサンドボックス化します。HTML サービスは、メールの本文の生成など、他の状況ではサンドボックスを使用しません。サンドボックスでは、クライアントサイド コードに制限が課せられます。

サンドボックス モード

IFRAME を除き、すべてのサンドボックス モードは廃止されます。以前に NATIVE モードまたは EMULATED モードを使用していたアプリは、自動的に IFRAME モードを使用するようになります。古いモードでスクリプトを開発した場合は、移行手順に沿って、スクリプトが正しく機能するようにしてください。

setSandboxMode メソッドは、呼び出されても効果がなくなりました。

IFRAME モードの制限事項

IFRAME サンドボックス モードは、HTML5 の iframe サンドボックス化機能に基づいており、次のキーワードを使用します。

コンテンツが最上位のブラウジング コンテキストをナビゲートできるようにする 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 が必要

スクリプト、外部スタイルシート、XmlHttpRequest などのアクティブ コンテンツは、HTTP ではなく HTTPS 経由で読み込む必要があります。