Loading [MathJax]/extensions/tex2jax.js

2014-04-20

GoogleサイトでのApp スクリプト呼び込み時にUserPrefを設定する方法

久しぶりのGAS(Google App Script)ネタです。

Google サイトでもGASは利用可能
ほとんどの人が知っていると思いますが、GASはGoogleサイトに埋め込みが可能です。Googleサイトは、JavaScriptの利用に関していろいろ制約がありますが、GASを利用することでちょっとした動的なページ生成が自然にできるという利点があります。その埋め込み方ですが、Googleサイトではデフォルトで埋め込みができるようにウィザードが用意されています。


Google Gadget用のXMLスクリプトを書かなくてもいいというのは便利ですね。

UserPrefの設定ができない
しかし、その便利さが欠点を生み出しています。それは、UserPrefを独自設定できないということ。XMLを書かなくてもいいということはカスタマイズできないというわけです。UserPrefを利用できれば、Gadgetの埋め込み時に初期パラメーターを任意に設定できるようになるので、URLパラメーターとしてGASに渡すことで、汎用的な使い方ができるという利点があります。そこで標準のウィザードに頼らず、GoogleGadgetのXML記述を自分で用意してiFrameの形式で呼び出せば、、と試みたんですが、どうもうまくいなかい。私のミスの可能性もありますが、少なくともiframeではなぜかGASを呼び出せないという結論になりました。

解決策:自作GadgetからスクリプトGadgetを呼ぶ
とりあえず試行して成功したのは、自作のGadgetXMLファイル内でiframeを介してスクリプトGadgetを呼ぶという荒業です。手順を以下に示します。
1.標準のApp スクリプトGadgetを利用して、対象のスクリプトを呼びページに埋め込む
 まずは、対象のAppスクリプトを標準のウィザードで呼び出しページに埋め込みましょう。
2.ページをHTMLモードで表示し、App スクリプトGadgetのURLを見つける
 Gadgetの中でdata-origsrcというのがGadgetURLの設定パラメーターのようですので、そのURLをメモします。


3. 自作のGadgetXMLファイル内でuserprefとiframeタグを記述する。
 iframeタグで先ほどメモしたApp スクリプトGadgetのURLを指定します。UserprefのパラメーターをURLパラメーターに渡すことはもちろん可能です。

<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="GAS Gadget Test"><Require feature="dynamic-height"/> </ModulePrefs> <UserPref required="true" display_name="url #" name="url"/> -<Content type="html">
<![CDATA[
<iframe width="100%" frameborder="0" scrolling="yes" marginheight="0" marginwidth="0" src="https://XXXXXXXXXXXXX?url=__UP_url__"></iframe>
]]>
</Content> </Module>

これで、GAS+Googleサイトを利用したちょっとした面白いアプリができそうです。

0 件のコメント:

コメントを投稿