HTML サービス: 制限

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

サンドボックス モード

IFRAMEを除くすべてのサンドボックス モードは廃止されました。古いサンドボックス モードを使用しているアプリは、自動的に新しい IFRAME モードを使用するようになりました。古いモード(NATIVEEMULATED)を使用して開発されたスクリプトがある場合は、移行手順に沿って、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 が必要です

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