

Google Apps
ScriptでテンプレートHTMLを作成し、doGetで表示。そのスクリプトのURLをiframeで指定して他サイトから表示することは可能でしょうか？

index.html

[code]

    <html>
    <body>
        <?
        var site = sitesApp.getPageByUrl("https://sites.google.com/...");
        var contents = site.getHtmlContent();
        output.append(contents);
        ?>
    </body>
    </html>
    
[/code]

code.gs

[code]

    function doGet() {
        var html = HtmlService.createTemplateFromFile("index");
        return html.evaluate;
    }
    
[/code]


CC BY-SA 3.0
2016-03-14T01:11:14.280
23103
2016-03-15T04:33:02.853
13997
question
google-apps-script
HTML Serviceをiframeで他サイトに埋め込む方法


今の所は出来なさそうですね。  
[X-Frame-Options](https://developer.mozilla.org/ja/docs/HTTP/X-Frame-
Options)という物があり、これを使うとWebページが他のサイトのiframeに埋め込まれるのを防ぐ事が出来ます。  
試しにHTML Serviceを作りアクセスして見ると、応答ヘッダに

[code]

    X-Frame-Options: SAMEORIGIN
    
[/code]

が含まれていました。app scriptはセキュリティ上の配慮が様々とられているようで、ここも制限されているのでしょう。  
いずれ条件付きで許可される事があるかも知れませんし、既に制限を解除する方法があるのかも知れませんが、ドキュメントにはそういった記述は無さそうです。

Google Sitesに埋め込む事は出来るので、それでやって欲しいという事でしょう。

* * *

追記:  
Google Sitesで作ったサイトは設定で`X-Frame-Options`の制限を外す事が出来ます。  
ですから、Google Sitesのページ自体は他のドメインのページにiframeで埋め込み可能です。  
しかし、それに埋め込んだHTML Serviceは相変らず`X-Frame-Options: SAMEORIGIN`です。

ではなぜGoogle Sitesに埋め込めるかというと、Google Sitesに埋め込んだHTML Serviceは
**script**.google.comではなく、 **sites**.google.com ドメインから配信されるからです。  
これによって`X-Frame-Options: SAMEORIGIN`の制限を回避しています。

よって『「HTML Serviceを埋め込んだGoogle Sites」を埋め込んだ外部ドメインのページ』ではGoogle
Sitesの部分は表示され、その中のHTML Serviceの部分は表示されない、という現象が起こります。

(こういった事情は刻々と変るので、いつまでこうなっているかは分かりません。念の為)


CC BY-SA 3.0
2016-03-14T10:17:20.403
23121
2016-03-15T04:33:02.853
2016-03-15T04:33:02.853
3054
3054
23103
answer