URLに情報を入れて挿入しよう

佐野

佐野 2012年11月9日

今回、GoogleAppsにて、
フォームから入力された情報の承認システムを作ろうと思い、
メールからのアクセスによって、それを行う事を計画し、
URLにハッシュとかを含めて、その情報を取得する方法を探していたのですが、
どうやらスプレッドシートからその情報を取る事はできないようで、
あきらめていたのですが、
別の方法で、それと同様の事が可能だという事が可能だとわかりました。

その方法は、スクリプトを、ウェブアプリケーションとして動作させ、
そこにアクセスした際のURLに付与されたパラメーター、
つまりはURLに含まれた追加情報を取得する方法がありました。

その方法を応用した資料を発見したのですが、
そこでの説明は、結果的には別の作業に関するものであり、
サンプルとして用意されたスクリプトを貼り付けて、
説明通りに行えば、その結果が出ますよというもの。

しかし、それだけでは当然、
どの部分がどの機能を担っているのかなど、わかるはずもなく、
バン! と置かれた完成品のスクリプトを利用し、
説明通りに作業を行っても、その理屈もわからないまま、
スクリプトの作者の意図通りに動くだけなのは、わかりきっている事です。

なので、自分の欲する部分がどれなのかを探すために、
サンプルスクリプトと、にらめっこしていても始まらないため、
とりあえず、説明通りに動くようにはしておき、
そのスクリプトを部分的に削除・起動を繰り返し、
自分の考えていた動作が起きるかどうかを確かめる、
いわゆる原石から宝石を取り出すための研磨作業が始まりました。

その結果、必要としていたのは、特定の関数の名前と、
ほんの1行のスクリプトというのが、わかりました。

関数名「doGet(e)」は、
ウェブアプリケーションのインターフェースを構築するために必要な名前みたい。
まだ本格的に手を付けていないため、あまりよくわかんないけど・・・

もうひとつ重要なのは、「doGet(e)」の中にある仮引数、
この場合は小文字の「e」の部分。
この仮引数には、アクセスの際のURLのパラメーター情報も含まれているもよう。
「e.parameter[]」により、そのパラメーターを引き出す事ができるらしい。
連想配列だっけ? 「[]」の中に文字列として
取り出したいパラメーターの名称を書いてやればいいようです。

残り、下のスクリプトは、単純にスプレッドシートに対して、
URLのパラメーター情報を挿入するだけの、いつものスクリプトです。
ただし、スプレッドシート自体はIDで指定する必要があるもようです。

実際にアクセスするためのURLは、
ウェブアプリケーションとして導入する際に教えてくれるURLと、
その後に「?」で区切り、さらに「test=らりるれろ」のように、
スクリプトで変数を定義・代入するのと似たように
パラメーターというのを書いていきます。
この画像ではエラーが出ていますが、単にインターフェースとかをまだ作ってないだけです。
今回の目的だけなら、問題はないようです。

すると・・・

URLのパラメーター通りに情報がセルに挿入されました!
「test=らりるれろ」と、URLの中で定義された変数のように、
「test」という名の変数から「らりるれろ」という文字列を取り出す事に成功しました。
日本語であっても取り出せるというとこが、地味ながらすごいです。
後は、GUIの構築という、もう1歩先の分野への進出ですね。