• 作成日 : 2025年8月25日

WEBSERVICE関数の使い方:WebAPIからデータを取得する方法

WEBSERVICE関数は、インターネット上のWebサービスからデータを取得する関数です。為替レート、株価、天気情報などのリアルタイムデータの取得、REST APIを使った外部システムとの連携、JSONやXML形式のデータの取り込みなど、様々な用途で活用されます。例えば、常に最新の為替レートで売上を換算したり、気象データを取得して売上予測に活用したりすることができます。本記事では、WEBSERVICE関数の基本的な使い方から実践的な活用方法、他の関数との効果的な組み合わせまで、初心者の方にも理解しやすく解説していきます。

WEBSERVICE関数とは

WEBSERVICE関数は、指定したURLからWebコンテンツを取得し、セルに表示する関数です。REST APIやWebサービスが提供するデータを、エクセルに直接取り込むことができます(GETメソッドでプレーンテキストを返すものに限る)。

この関数はWindows版のExcel 2013以降で利用可能で、Mac版では使用できません。

この関数の最大の特徴は、外部データソースとエクセルをシームレスに連携できることです。手動でのデータコピー作業を自動化し、常に最新の情報を反映したレポートや分析を可能にします。ただし、取得できるのはテキストデータのみで、画像やバイナリファイルは取得できません。

参考:WEBSERVICE 関数 – Microsoft サポート

WEBSERVICE関数の基本的な使い方

関数の構文を理解する

WEBSERVICE関数の構文は非常にシンプルです。

=WEBSERVICE(URL)

URLには、データを取得したいWebサービスのアドレスを文字列として指定します。

基本的な使用例

実際の使用例を見てみましょう。

公開されているAPIから為替レートを取得する場合:

=WEBSERVICE(“https://api.exchangerate-api.com/v4/latest/USD”)

この例では、米ドルを基準とした各国通貨の為替レートをJSON形式で取得します。

シンプルなテキストデータを取得する例:

=WEBSERVICE(“https://api.ipify.org?format=text”)

この関数は、現在のパブリックIPアドレスを取得します。

URLの動的生成

セル参照を使ってURLを動的に生成することも可能です。

=WEBSERVICE(“https://api.example.com/data?currency=” & A1 & “&date=” & TEXT(B1, “yyyy-mm-dd”))

A1セルの通貨コードとB1セルの日付を使って、動的にAPIのURLを構築します。

WEBSERVICE関数の実践的な利用シーン

金融データの自動更新

投資ポートフォリオ管理や財務レポートの作成において、最新の株価や為替レートを自動取得できます。毎朝レポートを開くだけで、前日の終値や現在の為替レートが自動的に更新され、手動での入力ミスを防げます。

複数の通貨で取引を行う企業では、リアルタイムの為替レートを使った損益計算が可能になり、為替リスクの管理精度が向上します。

気象データを活用した需要予測

小売業や飲食業では、天気によって売上が大きく変動します。WEBSERVICE関数で気象APIから天気予報を取得し、過去の売上データと組み合わせることで、より精度の高い需要予測が可能になります。

アイスクリーム店が翌日の最高気温を取得して仕入れ量を調整したり、傘の小売店が降水確率に基づいて在庫配置を最適化したりできます。

在庫管理システムとの連携

自社のWebAPIやクラウド在庫管理システムと連携して、リアルタイムの在庫状況をエクセルで確認できます。複数倉庫の在庫データを一元的に表示し、発注判断の材料として活用できます。

ECサイトの在庫データをAPIで取得し、エクセルで分析することで、売れ筋商品の把握や在庫回転率の計算が効率化されます。

WEBSERVICE関数の応用テクニック

エラーハンドリングの実装

ネットワークエラーやAPIの不具合に対処する方法:

=IFERROR(WEBSERVICE(A1), “データ取得エラー”)

より詳細なエラー処理:

=IF(ISERROR(WEBSERVICE(A1)), “接続失敗”, IF(WEBSERVICE(A1)=””, “データなし”, WEBSERVICE(A1)))

キャッシュを使った負荷軽減

同じURLへの頻繁なアクセスを避ける工夫:

=IF(NOW()-更新時刻>TIME(0,5,0), WEBSERVICE(URL), 前回取得値)

5分以上経過した場合のみ新しいデータを取得し、それ以外は前回の値を使用します。

複数のAPIを組み合わせた処理

異なるAPIからのデータを統合する例:

=WEBSERVICE(API1) & ” / ” & WEBSERVICE(API2)

為替レートと株価を別々のAPIから取得して、一つのセルに表示できます。

よくあるエラーと対策

#VALUE!エラーへの対処

URLが正しくない場合や、Webサービスが応答しない場合に発生します。

基本的なエラー処理:

=IFERROR(WEBSERVICE(A1), “URLを確認してください”)

URLの妥当性チェックを含む処理:

=IF(LEFT(A1, 4)<>”http”, “URLはhttp://またはhttps://で始める必要があります”,

IFERROR(WEBSERVICE(A1), “接続エラー:サーバーが応答しません”))

URLの形式を事前にチェックすることで、一般的な入力ミスを防げます。特に、手動でURLを入力する場合は、このような検証が重要です。プロトコルの指定忘れやスペルミスなど、よくあるエラーを未然に防ぐことができます。

タイムアウトエラー

サーバーの応答が遅い場合、エクセルがタイムアウトすることがあります。

代替URLの使用:

=IFERROR(WEBSERVICE(メインURL), IFERROR(WEBSERVICE(バックアップURL), “すべてのサーバーが応答しません”))

複数のデータソースを用意することで、信頼性を向上させます。メインのAPIサーバーがダウンしている場合でも、バックアップから データを取得できます。クリティカルなビジネスプロセスで使用する場合は、このような冗長性の確保が重要です。

データサイズの制限

WEBSERVICE関数で取得できるデータは、セルの仕様により最大32,767文字までに制限されています。

データサイズのチェック:

=IF(LEN(WEBSERVICE(A1))>=32767, “データが大きすぎます。APIでフィルタリングしてください”, WEBSERVICE(A1))

大量のデータを扱う場合は、API側でページネーションやフィルタリングを使用して、取得するデータ量を制限する必要があります。例えば、直近100件のみを取得するようなパラメータを追加することで、この制限を回避できます。

認証が必要なAPIへの対応

多くのAPIではAPIキーやトークンによる認証が必要ですが、WEBSERVICE関数では複雑な認証には対応していません。

APIキーをURLに含める方法:

=WEBSERVICE(“https://api.example.com/data?apikey=” & APIキーセル & “&param=” & パラメータ)

セキュリティ上の注意:APIキーをエクセルファイルに直接記載することはリスクがあります。共有ファイルでは使用を避け、必要に応じて別途セキュアな方法でAPIキーを管理することを推奨します。Power QueryやVBAを使用することで、より安全な認証方法を実装できます。

WEBSERVICE関数と他の関数との組み合わせ

FILTERXML関数でのデータ解析

XMLデータから特定の値を抽出する例:

=FILTERXML(WEBSERVICE(URL), “//rate[@currency=’EUR’]”)

=FILTERXML(WEBSERVICE(“https://api.example.com/xml”), “//item[1]/price”)

WEBSERVICE関数で取得したXMLデータから、XPath式を使って必要な情報だけを抽出できます。為替レートAPIから特定の通貨のレートだけを取り出したり、商品情報から価格だけを抽出したりする際に便利です。これにより、構造化されたデータを効率的に処理できます。

ENCODEURL関数での日本語対応

日本語を含むパラメータを正しくエンコードする例:

=WEBSERVICE(“https://api.example.com/search?q=” & ENCODEURL(A1))

=WEBSERVICE(“https://translate.api.com/translate?text=” & ENCODEURL(“こんにちは”) & “&to=en”)

日本語や特殊文字を含むパラメータをAPIに送信する場合、ENCODEURL関数でURLエンコードする必要があります。検索クエリや翻訳テキストなど、ユーザー入力を含むAPIリクエストでは必須の処理です。これにより、文字化けやエラーを防ぎ、正確なデータ取得が可能になります。

SUBSTITUTE関数でのデータ整形

取得したJSONデータから値を抽出する簡易的な方法:

=SUBSTITUTE(SUBSTITUTE(MID(WEBSERVICE(URL), FIND(“””rate””:”, WEBSERVICE(URL))+8, 10), “”””, “”), “,”, “”)

=VALUE(TRIM(SUBSTITUTE(SUBSTITUTE(MID(データ, FIND(“price”, データ)+7, 10), “:”, “”), “,”, “”)))

簡単なJSONデータの場合、文字列操作関数を組み合わせて値を抽出できます。完全なJSONパーサーではありませんが、単純な構造のデータには十分対応できます。為替レートや株価など、数値データを取り出す際に有効です。

TEXT関数での表示形式制御

取得したデータを見やすく整形する例:

=TEXT(VALUE(WEBSERVICE(為替API)), “#,##0.00”) & “円”

=”最終更新: ” & TEXT(NOW(), “yyyy/mm/dd hh:mm”) & ” – レート: ” & WEBSERVICE(URL)

数値データを通貨形式で表示したり、更新時刻を付加したりすることで、レポートの可読性が向上します。特に、経営層向けのダッシュボードでは、このような整形が重要です。生のAPIレスポンスを、ビジネスユーザーが理解しやすい形式に変換できます。

IF関数での閾値判定

取得したデータに基づいて警告を表示する例:

=IF(VALUE(WEBSERVICE(在庫API))<10, “在庫警告:残り” & WEBSERVICE(在庫API) & “個”, “在庫十分”)

=IF(VALUE(WEBSERVICE(気温API))>30, “猛暑日対策が必要”, “通常営業”)

APIから取得したデータを閾値と比較し、ビジネスアクションにつなげます。在庫管理での自動アラート、気象条件に基づく業務指示など、データドリブンな意思決定を支援します。条件に応じて背景色を変更する条件付き書式と組み合わせると、より効果的な可視化が可能です。

AVERAGE関数での集計処理

複数のAPIからデータを取得して平均を計算:

=AVERAGE(VALUE(WEBSERVICE(API1)), VALUE(WEBSERVICE(API2)), VALUE(WEBSERVICE(API3)))

=(VALUE(WEBSERVICE(今日の気温)) + VALUE(前日気温セル)) / 2

複数のデータソースから取得した値を集計することで、より信頼性の高い指標を作成できます。複数の為替レート提供元から平均レートを算出したり、複数地点の気温から地域平均を求めたりする際に使用します。外れ値の影響を軽減し、安定した指標を提供できます。

WEBSERVICE関数の実務での注意点

API利用制限の考慮

多くのAPIには利用回数の制限があります。無料プランでは1時間あたり1000回、1日あたり10000回などの制限が一般的です。エクセルの自動再計算により、意図せず大量のリクエストを送信する可能性があります。

手動計算モードに切り替えるか、VBAで更新頻度を制御することで、API制限を守りながら効率的にデータを取得できます。

セキュリティの確保

WEBSERVICE関数で取得したデータは、悪意のあるコードを含む可能性があります。信頼できるAPIのみを使用し、取得したデータを他のシステムに直接渡さないよう注意が必要です。

また、APIキーやパスワードなどの機密情報は、エクセルファイルに直接記載せず、環境変数や外部設定ファイルから読み込むような仕組みを検討してください。

パフォーマンスの最適化

WEBSERVICE関数は同期的に動作するため、複数のAPI呼び出しがある場合、シートの再計算に時間がかかります。以下の対策を検討してください。

  • 更新頻度の低いデータは、手動更新またはVBAでの定期更新に切り替える
  • 計算の多いシートでは、WEBSERVICE関数を別シートに分離する
  • 取得したデータを値として別セルにコピーし、参照はコピー先を使用する

WEBSERVICE関数でリアルタイムデータをExcelに取り込む

WEBSERVICE関数は、指定したURLからWebサービスのテキストデータを取得できる関数で、Windows版Excel 2013以降に対応しています。為替・天気・在庫情報などをリアルタイムに反映でき、手作業を自動化できます。

FILTERXMLやENCODEURL関数と組み合わせれば、構造化データの抽出や多言語対応も可能です。

ただし、認証が必要なAPIやJSONのパースには制限があるため、Power QueryやVBAとの併用も検討が必要です。実務ではAPI制限・エラー処理・パフォーマンスにも注意し、信頼性の高いデータ活用を目指しましょう。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事