■ユーザープロパティとスクリプトプロパティ
とりあえず、簡単なGUIを表示するのはこれでわかりました。次は、ユーザーになにか入力をしてもらい、それを取得して処理する、ということをやってみましょう。
GUI ビルダーで「ユーザーからの入力」を行う場合、何よりも重要な点が1つあります。それは、「GUIコンポーネントには、値を取り出すメソッドがない」という点です。実は、GUIコンポーネント関係のオブジェクトに用意されているメソッドを見てみると、2011年6月現在、「値を設定する」メソッドはあるけれど、「値を取得する」メソッドがないのです。
これは、そういう仕様なのか、あるいは「まだそこまでできてないからもうちょっと待って」ということなのか、今の段階ではわかりません。Google Apps Scriptがサーバー側で動くスクリプトであるという点、GUIがクライアント側に表示されている、という点を考えると、「クライアント側にダイナミックに生成されたGUIの状態をサーバーから取得する」というのは技術的になかなか難しいのかも知れません。
そこで、GUIの値を直接取得しないで利用するやり方を考えてみましょう。GUI部品には各種のイベントが用意されています。これを利用し、ユーザーから何か入力をされたら、その値をどこかに保管しておくようにするのです。そして、後で何かの処理を行うときには、この保管された値を利用すればよいのですね。
値の保管場所としては、まずぱっと思い浮かぶのは「シートのセル」でしょう。が、これはダメです。シートでは、常に1つの値しか保管できません。自分一人で利用するならいいのですが、例えばシートを共有したり公開したりして複数の人間がアクセスするようになると同時に値が保管できずトラブルを引き起こすでしょう。
入力された値は、それぞれのユーザーごとに保管しておく必要があります。こういうときに役立つのが「プロパティ」です。
プロパティは、さまざまな値を保管しておくことのできるものです。スクリプトエディタの<ファイル>メニューから<プロパティ>を選んでみてください。画面に「プロパティ」というダイアログが現れます。ここには3つのタブが表示されています。
「情報」タブ
スクリプトの名前、説明、最終更新日、スクリプトキー、タイムゾーンなどの情報が保管されています。
「ユーザープロパティ」タブ
ユーザープロパティは、ユーザーごとの情報を保管するのに用いられます。ここに、現在使用中のユーザープロパティが一覧表示されます。ユーザープロパティはここでプロパティを追加することもできますし、スクリプト内から生成することもできます。
「スクリプトのプロパティ」タブ
スクリプトのプロパティは、スクリプトに情報を保管するためのものです。ユーザープロパティと同様、ここに現在保管されているプロパティが一覧表示されます。
これらのプロパティは、スクリプトの中から利用することができます(「プロパティ」ウインドウで項目を作成しなくとも、スクリプト内から作れます)。入力用のコンポーネントで、値が変更されたらその値をユーザープロパティに保管しておき、それを後から利用するわけです。
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
記事のリストに戻る