web-dev-qa-db-ja.com

GoogleAppsスクリプトをiFrameに埋め込む

Google Apps ScriptのJavascriptを使用して動的に作成されたページをiFrameのウェブサイトに埋め込もうとしていますが、iFrameのコンテンツが表示されません。 Google Apps Scriptには同一生成元ポリシーがあり、読み込みを禁止しています。

私がやろうとしていることは(私は完全なリンクを削除しました):

<iframe src="https://script.google.com/a/macros/SCRIPT_ID"></iframe>

私が得ているエラーは次のとおりです。

Refused to display 'https://script.google.com/a/macros/SCRIPT_ID' 
in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

ポリシーを変更してコンテンツをiFrameに読み込む方法はありますか?

10
Technotronic

Googleは最近この機能を有効にしました。それはかなり長い間「機能要求」ステータスの下にありました。 ここにリンク

X-Frame-Optionsを明示的に定義できるようになりました。

別のドメインでの埋め込みを許可するには、オプションをHtmlService.XFrameOptionsMode.ALLOWALLにする必要があります

この件に関するGoogleのドキュメント:

https://developers.google.com/apps-script/reference/html/html-output#setXFrameOptionsMode(XFrameOptionsMode)

例:

function doGet() {
    return HtmlService.createTemplateFromFile('form.html')
        .evaluate() // evaluate MUST come before setting the Sandbox mode
        .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

お役に立てれば!

17
Dmitry

この問題は、開発モードでのみdoPost応答フォームで発生し、最初のdoGetフォームでtarget = "_self"をtarget = "_top"に変更することで修正しました。

   <form method="POST" id="ss-form" target="_top" action="<?!=SETTINGS.PUBLISHED_URL?>">
   
4
Chesare