課題解決 事例紹介

webservice関数で、Excelからクラウド活用

事象 Excelの関数"webservice関数"は、クラウドサーバと接続して値を取得できる。
使用関数 ただし、一般のwebserverに接続すると、単にhtmlが返ってくるだけで意味が無い。処理結果のみを返すしくみが必要だったため、これまであまり活用されてこなかった。
使い方事例 職場の公休日/過去の天気・気象情報/銀行・支店名称⇔コード変換・・・伝票番号から請求情報の取得も可能

webservice関数:URLに接続し結果を表示

見えないところが進化している、Excel

今どきExcelで関数を活用するなどと言おうものなら、古くさいものと非難されるケースが増えてきたようです。曰く、脱Excelの時代である、と。

ところが、デザインだけが微妙に変わっていると思われがちなExcelのバージョンアップ(モデルチェンジ)では、見えないところがものすごく進化しており、関数からクラウドサーバに接続できるように進化しています。

 

Excel2013以降は、それ以前とはクラウド親和性が別物

この後紹介するwebservice関数は、従来Book内で閉じていた関数が、外部のサーバに繋がるようになった画期的な関数です。これは、Excel2013のときに登場しました。

Excel2013といえば、それまでのExcel(2010以前)が複数のBookを1つのWindowで表現していたのが、複数Windowになったのが見た目の大きな変化でしたが、実はこの時点でクラウドとの親和性(接続しやすさ)が大きく進化しており、マクロ(VBA)を組む側から見ると、クラウドアプリを作るための機能が劇的に向上しています。

webservice関数の使い方

webservice関数は、わかりやすく言えば、URLを指定すると、接続先サーバからの処理結果を取得・表示します。

試しに、検索エンジンに接続してみましょう。

いわゆる「html」と呼ばれる、ホームページ記述言語がそのまま表示されてしまいました。「処理結果を表示」しているので、正しい動きではありますが、これでは活用できません。

ところが、サーバ側で問い合わせた内容に応じた結果を戻すようにしておけば、呼び出し側との「会話」が成り立ちます。

たとえば、以下のサンプルでは、銀行コードを投げると、銀行名として結果を返すしくみを持ったサーバに対して、webservice関数を使った例です。

”0001”の部分を、0005に変えれば三菱UFJ銀行ですし、0009なら三井住友銀行になります。

ブラウザのロケータ(URLを設定するところ)にhttps以下の部分をコピペすると、同じように銀行名が返ってくるのが確認できます。

以下のサンプル数式をお手許のExcelシートにコピペすれば再現できますので、興味がありましたらお試し下さい。

 =WEBSERVICE(“https://castanet.one/TT20_TR.php?KBN=ginko&Key1=0001”)

 

このように、サーバと直接通信し、結果を取得できるのがwebservice関数です。

 

webservice関数のメリット/デメリット

昨今、マクロウィルス対策として、マクロ(VBA)の利用そのものを取りやめる組織が増えているようです。その際、「Excelの拡張子がxlsx以外は利用禁止(xlsmやxlsbは利用禁止)」という言い方が一般的です。

ところで、webservice関数はいわゆる”関数”であり、マクロではありませんから、拡張子はxlsxのまま利用できます。

つまり、様々な「セキュリティ上の要因」により使用禁止となりがちなExcelに、関数のままサーバ(クラウド)に接続する方法が増えたのは、大きなメリットです。

しかも、接続先(サーバ側)で機能をどうとでもできるので、様々な応用が可能です。

一方、「デメリットとしては、WindowsOSの機能を使っている」そうなので、関数なのにMac版やOnline版のExcelでは動きません。また、他の関数に比べると、サーバでの処理時間がかかるためか、「打てば響く」というスピード感ではありません。更に言えば、vlookupやsum関数のような一般的な関数と、考え方がかなり異なるため、パラメータの渡し方など、幾ばくかの”慣れ”は必要になります。

 

基礎的なwebservice関数の使い方

webservice関数は、=webservice(URL) のように指定して使います。但し、一般のWebページのURLを指定しても、長すぎる等の理由で表示できず、#valueとなってしまいます。

例として、下のサンプルは、先の銀行コードから名称を取得する表現について、「セルC2にある銀行コードを参照して、銀行名を表示する」ようにしています。

このように、他のセルを参照するようにしておけば、新規取引先の口座を登録する際などに、まとめて名称を取得することができます。

この他、支店名も取れるようになっていますが、公開サーバ上では、自社固有情報を登録するのは気が引けますが、データを自社内に配置すれば、以下のような事ができるようになります

 

使い方例1:会社の祝日・公休日を取得する

単に土日を識別するだけであれば、weekday関数を使えば識別できます。

祝日を識別するなら、裏のシートに祝日を並べておき、vlookup関数で参照すれば、識別できます(春分/秋分の日を除けば、固定値でも算出可能)。各人が同じような仕組みを作らなくても、最初に登録した人の成果を使い回せれば、無駄もなくなるので、こんな情報こそwebservice関数で取得できるようにしておくと便利です。

しかし、公休日(職場が決めた休日)は、会社の創業記念日や年末年始休暇などが含まれるため、各社で設定する必要があり、公開サーバの情報では不足します。

上記の例では、企業単位で異なる内容を識別できるように登録した例です。社内にデータを置ければ、こうしたデータの活用ができるわけです。

 

使い方例2:献立に必要なカロリー・栄養計算

文部科学省では、給食の献立に役立つ、栄養素ごとのカロリー・栄養素の含有量のデータを公開しています。

これを組み合わせて、予め献立のメニューごとに構成する食品(材料)と分量を登録しておけば、1週間・1ヶ月でどの程度栄養が取れているか、の資料化(事前にやるなら計画)が可能です。

 

使い方例3:天気・温湿度・日照時間(気象情報)

今日の天気予報を見るだけなら、ネットで調べた方がビジュアルに表現されたリアルタイム情報があふれています。。

しかし、過去の気象情報を調べたい時、しかも大抵はある程度まとまった日の情報を調べる場合、なかなかの手間がかかります。

気象庁サイトにいけば、過去の気象情報を公開ていますが、例えば「毎週月曜日の数値を取りたい」といった場合、何度も同じ操作を繰り返して表示させる必要があり、なかなか面倒です。

そんな時、関数だけで天気や気温などが呼び出せると、格段に利便性が向上します。

下図の例では、webservice関数だけで、当該日の曜日と祝日情報とともに、各日の温湿度・風速・日照時間・天気を表示しています(いずれも、東京の数値です)。

 

 

使い方例4:取引先情報

取引先には、頻繁に請求書や見積を送付したり、何かと電話で連絡をとったりと、関連情報が必要になります。

Excelで一覧形式にまとめておいてもよいのですが、複数のバリエーションがあるケースを多く見かけます(仕入先と販売先等)。

こうした情報も一元化して登録しておけば、webservice関数で呼び出せるようになります。

以下は、登録する際に使うツールですが、下段の図ではF1、F2・・・の情報を個別に、同じwebservice関数の設定を変更するだけでで切り替えて取得しています。

 

自社用に、データをカスタマイズ可能

今回ご紹介したwebservice関数のサンプルの一部と接続先は、当社が評価用に無料で公開しているものです。

といっても、特別なサーバなどがいるわけではなく、お手持ちのExcel(2013/2016/365)があれば、すぐに活用できるものです。

興味がありましたら、もう少し掘り下げた使い方の解説やサンプルファイルの配布もしていますので、是非お試し下さい。