第4回 Excelワークシートからテーブルとページを作成してみよう:連載:Forguncy 3でカンタンWebアプリ開発(4/4 ページ)
ForguncyはExcelライクな使用感でWebアプリを作成するだけのものではない。今回は既存のExcelワークシートを基にWebアプリを作成してみよう。
アプリを完成させる
前ページまでの設定のまま、アプリを実行して請求書の登録ページを表示してみたのが以下の画像だ。
全体が左に寄りすぎているのを修正したいとも思うが、それより前に画面右上のコンボボックスで[マイケルソフト]を選択したが、関連する情報が表示されていないことと、[内容]セルでの商品選択に応じた単価を表示できていないことが大きな問題だ。実はデバッグ実行を開始した瞬間にForguncy BuilderのIDEには次のようなメッセージが表示されている。
ExcelシートではVLOOKUP関数で別シートのセル範囲を検索範囲にしてうまく動作していたのだが、Forguncyではこれがうまく動かなかったということだ。動くようにするには幾つかの方法があるが、ここではODATA関数を使ってみよう。ODataプロトコルで定められているリソースパス/クエリオプションを指定してODATA関数を呼び出すと、指定したテーブルから指定したクエリオプションに合致するデータを取得できる。
Forguncyの場合、リソースパスとは簡単にいえば「テーブル名」のこととなる。クエリオプションには、この場合、フィルターを指定して、そのフィルターに合致するレコードから特定のフィールドを選択するので「$select」「$filter」の2つのオプションを指定する。例えば、「コンボボックスで選択した会社から、その会社の担当者を取得したい」のであれば、リソースパスとクエリオプションは「"取引先テーブル?$select=担当者&$filter=ID eq " & F8」のようになる(F8はコンボボックスがあるセル)。
このODATA関数呼び出しと、エラー発生時の表示を切り替えるためにIFERROR関数とを組み合わせて「=IFERROR(ODATA("取引先テーブル?$select=担当者&$filter=ID eq " & F8), "")」を担当者を表示するセルの内容とする。他のセルについても同様な設定を行ったのが次の画面だ。
ただし、これだけでは問題は解決しない。コンボボックスの設定を行う必要があるのだ。これにはコンボボックスを選択して、右ペインの[セル型]タブで表示する項目の設定を行う。Forguncyはインテリジェントに表示項目を元のExcelシートから抽出してくれるのだが、ここでは[取引先テーブル]に含まれているデータから[会社名]フィールドを表示するようにしよう。
以上の設定を行ってから、アプリを実行すると次のようになる。
実は上で見たのと同様な手順で、[内容]セルのコンボボックスに[商品テーブル]のデータを表示するように設定した上で、[単価]セルの内容をやはりODATA関数を使って単価を商品テーブルから取得するようにすることで、[単価]セルもうまく表示できるようになる。実際の[単価]セルの内容は「=IFERROR(ODATA("商品テーブル?$select=単価&$filter=ID eq "&B18),"")」のようになる。コンボボックスとODATA関数の2つの設定を行い、アプリを実行すると次のように[内容]コンボボックスで項目を選択して、セルを移動すると[単価]セルに単価が表示されるようになる。
後は少々見た目の修正などを行ったものを以下に示す。
ドロップダウンで会社名や商品名を選択するようにすることで、不要なデータの入力や間違ったデータの入力を避けることもできる。このような少し便利なWebアプリがExcelワークシートからとても簡単に作成できることを感じていただけただろうか。
本稿では取りあえずこれでアプリは完成したものとするが、取引先/商品の登録/編集機能、Excelへのエクスポート機能、既存のExcelデータのリストビューへのインポート機能など、この他にも追加した方がよさそうなことはたくさんある。Excel資産も少しずつ機能を増やしていったと思うが、Forguncyでも上に挙げたような機能を少しずつ追加していけばよいだろう。日々の業務を少しでも便利にするようなちょっとした機能をExcelからWebアプリに移行して、その機能を徐々に充実させていくのをForguncyは強力にサポートしてくれるはずだ。
Copyright© Digital Advantage Corp. All Rights Reserved.