
WEBSERVICE関数、使っていますか?
この関数はExcel2013以降の製品に搭載されたので、利用可能になってから約10年くらい経つのですが、最近この利便性が大きく見直されています。
なぜでしょう?
それは、WebAPIを活用して、WEBSERVICE関数によりノーコードでExcelへ情報を取り込む”ExcelAPI”というサイトが、広く一般公開されるようになったからです。
この記事では、いま話題のWEBSERVICE関数と、”ExcelAPI”を使うと、どのような点が便利なのかを、くわしく見てみましょう。
WEBSERVICE関数は、Webサービスからデータを取得する関数
この関数は英単語の意味どおり、Webサービスからのデータを返す関数です。
構文はとてもシンプルで、
=WEBSERVICE(URL)
となり、引数(URL)の部分に、呼び出すWebサービスのURLを入力します。
サイトURLを入れるだけで、ものすごく簡単に使える関数のようにみえますが、残念ながら実際には「入れるだけ」ですまない場合が、非常に多いのです。
Excelへ取り込めるWebサービスの形式やデータ容量に、さまざまな制約があるからです。
たとえば、この関数のURL部分に、当サイト”せるワザ”のお知らせページを入れてみましょうか?

あっけなく、エラーメッセージ #VALUE! が返ってきましたね。
WEBSERVICE関数でえられるWebからの応答データは、XMLもしくはJSONといわれるデータ形式のため、この形式で返せないHTMLサイトからの返り値は、#VALUE!となります。
それ以外にも、MicrosoftサポートのWEBSERVICE関数解説ページより、#VALUE!エラーが返されるケースの例を引用して紹介します(一部、英語から日本語への翻訳でおかしくなったと推定される言い回しは、修正しています)。
・引数がデータを返せない場合、#VALUE!エラーが表示されます。
・引数の結果に無効な文字列、または許容されるセル制限である 32767 文字を超える文字列が含まれる場合、 #VALUE!エラーが表示されます。
・URL が GET 要求に対して許可されている 2048 文字を超える文字列である場合、#VALUE! エラーが表示されます。
・サポートされていないプロトコル (ftp:// や file://など)の場合、#VALUE!エラーが返されます。
引数に入れたURL該当サイトが32,767文字を超えたり、URLが2048文字を超えてしまうケースも、けっして希(まれ)ではありません。
とくに2048文字以上のURLを、最初から指定することはないにせよ、「エンコードの違い(UTF-8/Shift-JIS)」により、記号類が置きかえられてしまい、長文URLとなることはすくなくありません。 それ以外にも、「関数の結果を得るための制約」が多く、単に「URLを入れただけで、Web情報がそのままExcelに再現できる」関数ではない、と認識しておく必要があります。
WEBSERVICE関数(など)を使って、効果的にWebAPIをよびだす“ExcelAPI”が話題沸騰!!
では、なぜこのWEBSERVICE関数が急に注目されるようになったかというと、この関数をうまく活用したExcelAPIというサイトが大ヒットしたからです。

ExcelAPIは、ネットワークエンジニアであるryuden氏が、個人で立ち上げたAPIサービスです。提供する機能は、”インターネット経由で、Excelが処理できる形式のデータを、 WEBSERVICE関数を介して提供すること”、つまり、JSON形式のWebサイト応答データを、Excel形式(平文、plaintext)に変換して返してくれるサービスです。
IMAGE関数などの新関数にも対応
作者は、日本国内に多数存在するWebAPIの形式をこまかく調べ、2017年頃からコツコツとこのAPIサイトを育ててきましたが、2022年8月にWebニュースなどで大きく取り上げられると、一気にこのサービスへの評判が高まりました。
日付、住所、文字列、辞書、翻訳……なんでもござれの「ExcelAPI」がスゴい
「ExcelAPI」と新関数「IMAGE」を組み合わせたデモが早速お披露目
このサービスでWebからExcelへ取り込むことができる情報については、サイト内に一覧が紹介されていますが、幅広いジャンルにわたります。
- 日付時刻
- 郵便住所
- 電話番号
- 数字
- 言語
- 辞書
- 翻訳
- 通貨
- 法人情報
- 個人
- 地図
- その他
今回は、この中からの一例として、ビジネスの現場でも利用頻度が高い、”郵便番号検索API”を活用した住所<==>郵便番号変換の事例を具体的にみてみましょう。
WEBSERVICE関数とExcelAPIで、不明な郵便番号を自動とりこみ
顧客名簿や会員リストを整備して、ダイレクトメールを発送するなどのマーケティング活動は、いまでも顧客との関係性維持にとても有効な手段です。しかし、アンケートや自由記入フォームなどから収集した住所データには、データ不備が付きものですよね。社内保存用資料とするには、事前のデータクリーニングが必要です。

なかでも住所録に郵便番号が不記載であるケースは多く、これを放置しておくと、郵便物を発送する段階になって、Webや郵便番号簿検索に時間を費やすこととなります。
これが、Excel関数一つで自動入力されるとしたら、便利ですよね。 ExcelAPIならできるんです。

構文は
=WEBSERVICE(“http://api.excelapi.org/post/zipcode?address=”&ENCODEURL(住所セル番地))
となります。
引数の”http:〜”がExcelAPIを呼びだすためのURLで、Shift-JIS(漢字)で書かれた住所情報をUTF-8にエンコードしなおしてから郵便番号検索へかけるため、ENCODEURL(住所セル番地)という関数を併用して、検索対象レコードを指定します。 この関数式を、おなじワークシート上の全住所録へドロップすれば、すべての郵便番号不明レコードについて、正しい郵便番号が検索され、自動入力されるようになるのです。

まとめ
WEBSERVICE関数とExcelAPIを利用すれば、
マクロ不要、Power Automate Desktop(PAD)不要でWebAPIが利用可能に
このような検索結果は、これまでもマクロやPADできちんとプログラムを組めば、同じように得られたものです。
しかし、WEBSERVICE関数+ExcelAPIのすぐれたところは、
「プログラムを組まずに」、関数1つで、
WebAPIからの正しい応答データを、Excelのシート上に平文で返してくれることです。
WebAPIの利活用を”プログラマからExcel一般ピープルへ解放した”革命的(!?)新サービスといっても過言ではないでしょう。
これで、部署内のExcel職人が異動してしまっても、WebAPIの操作がラクにできますね。
ただし、この組み合わせ(WEBSERVICE+ExcelAPI)、WindowsOS固有の機能を一部利用するため、Excel2013以上のインストール版でのみ機能します。Web版Microsoft365などでは利用できませんので、ご注意ください。
もしあなたが仕事で使っているExcelのバージョンが、このシステム要件に合致しているならば、ぜひ一度ExcelAPIのトップページにアクセスして、事例をみながら実際に試してみてください。
この便利さを一度実感してしまうと、どんどん欲が出て、もっと他のWebAPI(GoogleMap APIなど)にも活用してみたくなること間違いナシ、ですよ。


