「営業リストの企業情報を手作業でExcelに転記している」「Googleスプレッドシートに最新の企業データを自動で反映させたい」。営業やマーケティングの現場では、企業情報の収集・更新にかかる工数が大きな課題になっています。

企業情報APIを使えば、ExcelやGoogleスプレッドシートに企業データを自動で取り込む仕組みを構築できます。しかし、「APIの呼び出し方がわからない」「GASやVBAでどう書けばいいのか」「RPAツールとの連携方法が知りたい」という声も多く聞かれます。

本記事では、企業情報APIとExcel・Googleスプレッドシートを連携する具体的な方法を、Google Apps Script(GAS)、Power Automate(RPA)、Excel VBAの3つのアプローチに分けて解説します。企業情報APIの基本的な仕組みや全体像については「企業情報APIとは?仕組み・できること・導入メリットを徹底解説」をあわせてご覧ください。

なぜ企業情報APIとExcel・スプレッドシートを連携するのか?

手作業による企業情報管理の限界

多くの営業組織では、企業情報の管理にExcelやGoogleスプレッドシートを利用しています。営業リストの作成、ターゲット企業の属性管理、商談先の基本情報整理など、スプレッドシートは業務の中核を担うツールです。しかし、企業情報の収集・更新を手作業で行っている場合、以下のような問題が発生します。

  • データ入力の工数:1社あたりの企業情報(社名・住所・従業員数・売上高・業種・代表者名など)を手作業で入力すると、5〜10分程度かかる。100社分のリストを作成するだけで8時間以上の工数が必要
  • 情報の鮮度低下:企業の住所変更、代表者交代、従業員数の増減などは頻繁に発生する。手動更新では対応が追いつかず、古い情報のまま営業活動を行うリスクがある
  • 入力ミス・表記ゆれ:手作業では「株式会社」と「(株)」の混在、住所の番地表記の不統一、業種分類の担当者ごとの揺れなど、データ品質の低下が避けられない
  • 属人化:特定の担当者だけがリスト作成のノウハウを持っており、その人が不在になるとリストの品質が著しく低下する

総務省の「情報通信白書」によれば、日本企業の業務時間のうち約3割がデータの収集・整理・転記に費やされているとされています。企業情報の手作業管理は、まさにこの非効率の典型例です。

API連携で実現できること

企業情報APIとExcel・スプレッドシートを連携することで、以下のような自動化が実現できます。

自動化の内容 手作業の場合 API連携後
企業名からの属性情報取得 1社5〜10分(Web検索・転記) 数秒(自動取得・自動記入)
100社分の営業リスト作成 8〜16時間 数分(条件指定で一括取得)
既存リストの情報更新 月1回(工数確保できず放置も多い) 日次〜週次で自動更新
新規設立企業の検知 手動チェック(漏れ多い) 定期バッチで自動検知・追加

特に重要なのは、既存のワークフローを大きく変えずに自動化できる点です。営業担当者は普段使い慣れたExcelやスプレッドシート上でデータを確認・編集するだけで、裏側ではAPIが最新の企業情報を自動で取得・反映しています。CRM/SFAを導入していない組織や、スプレッドシートベースで営業管理を行っている組織にとって、API連携は最も手軽かつ効果的な自動化の第一歩です。

Google Apps Script(GAS)で企業情報APIを呼び出す方法

GASの基本設定

Google Apps Script(GAS)は、Googleスプレッドシートに標準搭載されているスクリプト環境です。追加のソフトウェアインストールが不要で、ブラウザ上でコードを記述・実行できるため、非エンジニアでも比較的取り組みやすい自動化手段です。企業情報APIとの連携においては、GASのUrlFetchAppクラスを使ってHTTPリクエストを送信し、レスポンスのJSONデータをスプレッドシートに書き込む流れになります。

GASの開発環境を開くには、Googleスプレッドシートのメニューバーから「拡張機能」→「Apps Script」を選択します。新しいタブでスクリプトエディタが開き、ここにAPIを呼び出すコードを記述します。

まず、APIキーの管理について確認しておきましょう。企業情報APIのAPIキーは、コード内に直接記述するのではなく、GASの「スクリプトプロパティ」に保存するのが安全です。スクリプトエディタの「プロジェクトの設定」→「スクリプトプロパティ」から、キー名「API_KEY」に対してAPIキーの値を登録します。こうすることで、コードを共有した際にもAPIキーが漏洩するリスクを低減できます。

GAS スクリプトプロパティの設定手順

1. スクリプトエディタを開く(拡張機能 → Apps Script)
2. 左メニューの歯車アイコン「プロジェクトの設定」をクリック
3.「スクリプトプロパティ」セクションで「スクリプトプロパティを追加」をクリック
4. プロパティ名に「API_KEY」、値にAPIキーを入力して保存

APIリクエストの書き方

GASからAPIを呼び出す基本的なコードパターンを紹介します。以下は、企業名をキーにして企業の基本情報を取得する関数の例です。

GAS コード例:企業情報APIの呼び出し

function fetchCompanyInfo(companyName) {
  var apiKey = PropertiesService.getScriptProperties().getProperty('API_KEY');
  var baseUrl = 'https://api.example.com/v1/companies';
  var url = baseUrl + '?name=' + encodeURIComponent(companyName) + '&api_key=' + apiKey;

  var options = {
    'method': 'GET',
    'headers': { 'Accept': 'application/json' },
    'muteHttpExceptions': true
  };

  var response = UrlFetchApp.fetch(url, options);
  var json = JSON.parse(response.getContentText());
  return json;
}

このコードのポイントは3つあります。第一に、PropertiesService.getScriptProperties()でスクリプトプロパティからAPIキーを読み取っている点です。第二に、encodeURIComponentで企業名をURLエンコードしている点です。日本語の企業名をそのままURLに含めると文字化けやエラーの原因になります。第三に、muteHttpExceptionsをtrueに設定している点です。これにより、APIがエラーレスポンス(4xx/5xx)を返した場合でもスクリプトが停止せず、エラーハンドリングが可能になります。

レスポンスのJSONデータには、企業の法人番号、所在地、従業員数、売上高、業種コード、設立年月日などが含まれます。APIの仕様によってレスポンスの構造は異なりますが、一般的にはネストされたJSONオブジェクトとして返却されます。

スプレッドシートへの自動書き込み

取得した企業情報をスプレッドシートに自動で書き込む処理を実装します。以下は、A列に企業名が入力されているシートに対して、B列以降に企業情報を自動で埋める関数の例です。

GAS コード例:スプレッドシートへの一括書き込み

function fillCompanyData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('営業リスト');
  var lastRow = sheet.getLastRow();

  for (var i = 2; i <= lastRow; i++) {
    var companyName = sheet.getRange(i, 1).getValue();
    if (!companyName) continue;

    var data = fetchCompanyInfo(companyName);
    if (data && data.results && data.results.length > 0) {
      var company = data.results[0];
      sheet.getRange(i, 2).setValue(company.corporate_number || '');
      sheet.getRange(i, 3).setValue(company.address || '');
      sheet.getRange(i, 4).setValue(company.employee_count || '');
      sheet.getRange(i, 5).setValue(company.revenue || '');
      sheet.getRange(i, 6).setValue(company.industry || '');
    }
    Utilities.sleep(1000); // レート制限対策
  }
}

重要なのは、ループ内にUtilities.sleep(1000)を入れている点です。APIにはレート制限(一定時間内のリクエスト回数上限)が設けられていることが多く、連続してリクエストを送るとエラーが返される場合があります。1秒間のウェイトを入れることで、レート制限に抵触するリスクを低減しています。

さらに、GASのトリガー機能を使えば、この処理を定期実行することも可能です。スクリプトエディタの「トリガー」メニューから、「時間主導型」トリガーを設定すれば、毎日・毎週など任意のスケジュールでAPIを呼び出し、スプレッドシートの企業情報を自動更新できます。導入の具体的な手順については「企業情報APIの導入手順|APIキー取得から実装まで解説」も参考にしてください。

Excel × Power Automate(RPA)での連携方法

Power Automateとは

Microsoft Power Automateは、Microsoftが提供するノーコード/ローコードの業務自動化プラットフォームです。以前は「Microsoft Flow」という名称で提供されていました。Excelとの親和性が非常に高く、企業情報APIとExcelを連携させる際にはPower Automateを仲介役として活用するのが効率的です。Microsoft 365のビジネスプランに含まれている場合も多いため、追加コストなしで利用を開始できるケースがあります。

Power Automateの最大の特徴は、プログラミング不要でAPI連携を構築できる点です。「フロー」と呼ばれるワークフローをGUIで設計し、トリガー(起動条件)→アクション(実行内容)の順に処理を定義します。企業情報APIとの連携では、「HTTPコネクタ」を使ってAPIにリクエストを送り、返ってきたJSONデータをExcelの行に書き込む、という流れで自動化を実現します。

フローの構築手順

Power Automateで企業情報APIとExcelを連携するフローは、以下のステップで構築します。

Power Automate フロー設計の流れ

ステップ1:トリガーの設定
「スケジュール - 繰り返し」トリガーを選択し、毎日午前9時に実行するよう設定する。

ステップ2:Excelテーブルの行を取得
「Excel Online (Business)」コネクタの「テーブル内に存在する行を一覧表示」アクションを追加。対象のExcelファイルとテーブル名を指定する。

ステップ3:各行に対してAPIを呼び出し
「Apply to each」ループ内に「HTTP」アクションを追加。メソッドをGETに設定し、URLに企業情報APIのエンドポイントとパラメータを指定する。ヘッダーにAPIキーを設定する。

ステップ4:レスポンスの解析
「JSONの解析」アクションでAPIレスポンスをパースする。スキーマはAPIのレスポンス例から自動生成可能。

ステップ5:Excelの行を更新
「Excel Online (Business)」コネクタの「行の更新」アクションで、パースしたデータをExcelの該当列に書き込む。

Power Automateでは、HTTPコネクタを使用するために「プレミアムコネクタ」のライセンスが必要です。Microsoft 365のE3/E5プランやPower Automate per userプランに含まれています。ライセンスの確認は、Power Automateの管理画面から行えます。

実践的な活用パターン

Power Automateを活用した企業情報API連携の代表的なパターンを紹介します。

  • 営業リスト自動補完フロー:SharePoint上のExcelファイルに企業名を入力すると、Power Automateが自動的にAPIを呼び出し、住所・電話番号・従業員数・業種などを補完する。営業担当者は企業名を入力するだけで、完全な営業リストが自動生成される
  • 定期データ更新フロー:週次でExcelファイル内の全企業データをAPIで最新情報に更新する。従業員数や売上高の変動を自動検知し、変更があった行にフラグを立てる。営業マネージャーは変更フラグのある企業を優先的にフォローアップできる
  • 新規企業検知フロー:APIの「新規設立企業」エンドポイントを日次で呼び出し、条件に合致する企業を自動的にExcelリストに追加する。スタートアップや新規法人をターゲットとする営業チームに有効
  • Teams通知連携フロー:APIから取得した企業情報に特定の条件(売上高10億円以上、従業員数100名以上など)が合致した場合、Microsoft Teamsのチャンネルに自動通知を送る。営業チームが即座にアプローチを検討できる

Power Automateの利点は、フローの構築後に一切のコーディングなしで運用できる点です。フローの実行履歴やエラーログも管理画面から確認でき、問題が発生した際のトラブルシューティングも容易です。また、Power Automateにはテンプレートが豊富に用意されており、類似のフローを参考にしながらカスタマイズすることで、短時間でAPI連携を構築できます。

Excel VBA からAPIを呼び出す方法

VBAでのHTTPリクエスト実装

デスクトップ版のExcelを使用している場合、VBA(Visual Basic for Applications)からAPIを直接呼び出す方法も有効です。クラウド環境への依存がなく、ローカルのExcelファイルで完結するため、セキュリティポリシーが厳しい企業やオフライン環境での利用に適しています。

VBAからHTTPリクエストを送信するには、「Microsoft XML, v6.0」(MSXML2.XMLHTTP60)または「WinHttp.WinHttpRequest.5.1」オブジェクトを使用します。まず、VBAエディタ(Alt + F11)を開き、「ツール」→「参照設定」から「Microsoft XML, v6.0」にチェックを入れて参照を追加します。

VBA コード例:企業情報APIの呼び出し

Sub FetchCompanyData()
  Dim http As New MSXML2.XMLHTTP60
  Dim apiKey As String
  Dim baseUrl As String
  Dim companyName As String
  Dim url As String
  Dim json As String

  apiKey = ThisWorkbook.Sheets("設定").Range("B1").Value
  baseUrl = "https://api.example.com/v1/companies"

  Dim ws As Worksheet
  Set ws = ThisWorkbook.Sheets("営業リスト")
  Dim lastRow As Long
  lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

  Dim i As Long
  For i = 2 To lastRow
    companyName = ws.Cells(i, 1).Value
    If companyName <> "" Then
      url = baseUrl & "?name=" & _
        WorksheetFunction.EncodeURL(companyName) & _
        "&api_key=" & apiKey

      http.Open "GET", url, False
      http.setRequestHeader "Accept", "application/json"
      http.Send

      If http.Status = 200 Then
        json = http.responseText
        ' JSONパース処理(後述)
      End If
      Application.Wait Now + TimeValue("00:00:01")
    End If
  Next i
End Sub

JSONレスポンスの解析

VBAには標準でJSONパーサーが搭載されていないため、JSONレスポンスの解析にはひと工夫が必要です。主に3つのアプローチがあります。

  • VBA-JSONライブラリの利用:GitHubで公開されているオープンソースのVBA-JSON(JsonConverter)をインポートする方法。最も一般的で推奨される方法。Dictionary/Collectionオブジェクトとしてデータを操作できる
  • ScriptControlの利用:VBAからJavaScriptエンジンを呼び出してJSONをパースする方法。32bit版Excelでのみ動作するため、環境依存が大きい
  • 文字列操作によるパース:Mid、InStr、Split等の文字列関数でJSONを直接解析する方法。ライブラリの追加が不要だが、ネストされたJSONには対応しにくい

実務では、VBA-JSONライブラリの利用を推奨します。以下は、VBA-JSONを使ってAPIレスポンスを解析し、スプレッドシートに書き込むコードの例です。

VBA コード例:JSONパースとセル書き込み

' VBA-JSON(JsonConverter)を参照設定済みの前提
Dim parsed As Object
Set parsed = JsonConverter.ParseJson(json)

If parsed("results").Count > 0 Then
  Dim company As Object
  Set company = parsed("results")(1)
  ws.Cells(i, 2).Value = company("corporate_number")
  ws.Cells(i, 3).Value = company("address")
  ws.Cells(i, 4).Value = company("employee_count")
  ws.Cells(i, 5).Value = company("revenue")
  ws.Cells(i, 6).Value = company("industry")
End If

VBAによるAPI連携は、GASやPower Automateと比較すると初期設定の手間が大きいものの、ローカル環境で動作する安心感と、既存のExcelマクロとの統合がしやすい利点があります。特に、社内のセキュリティポリシーでクラウドサービスの利用が制限されている企業では、VBAが現実的な選択肢になります。

連携時のよくあるトラブルと対処法

認証エラー(401/403)

企業情報APIとの連携で最も頻繁に発生するトラブルが、認証関連のエラーです。HTTPステータスコード401(Unauthorized)または403(Forbidden)が返される場合、以下の原因と対処法を確認してください。

原因 症状 対処法
APIキーの入力ミス 401エラー APIキーの先頭・末尾に空白が含まれていないか確認。コピー&ペースト時に余分な文字が混入しやすい
APIキーの期限切れ 401エラー API提供元の管理画面でキーの有効期限を確認。期限切れの場合は再発行
IPアドレス制限 403エラー APIの利用がIPホワイトリストで制限されている場合、GASの実行元IP(Googleのサーバー)やPower AutomateのIPを許可リストに追加
プラン制限 403エラー 利用中のAPIプランで許可されていないエンドポイントにアクセスしている可能性。プランの確認・アップグレードを検討

レート制限(429 Too Many Requests)

多くの企業情報APIでは、サーバー負荷を制御するためにレート制限が設定されています。短時間に大量のリクエストを送信すると、HTTPステータスコード429が返されます。対処法としては、リクエスト間にウェイトを挿入する(GASならUtilities.sleep、VBAならApplication.Wait)のが基本です。加えて、APIレスポンスヘッダーの「X-RateLimit-Remaining」や「Retry-After」の値を確認し、残りリクエスト数やリトライ可能になるまでの秒数を把握することが重要です。

大量のデータを一括取得する場合は、バッチ処理の設計が有効です。たとえば、1,000社分のデータを取得する場合、100社ずつ10回に分割し、各バッチの間に10秒のインターバルを入れる、といった設計にすることでレート制限を回避しつつ効率的にデータを取得できます。

文字化け・エンコーディング問題

日本語の企業名をAPIパラメータに含める際、URLエンコーディングが正しく行われていないと文字化けが発生します。GASではencodeURIComponent、VBAではWorksheetFunction.EncodeURLを使用して日本語文字列をエンコードしてください。また、APIレスポンスのJSON内で日本語がUnicodeエスケープ(\u30xx形式)で返される場合がありますが、通常はJSONパーサーが自動的にデコードしてくれます。

タイムアウトエラー

APIサーバーの応答が遅い場合やネットワーク環境が不安定な場合、タイムアウトエラーが発生することがあります。GASのデフォルトのタイムアウトは約30秒ですが、VBAではMSXML2.XMLHTTP60のsetTimeoutsメソッドで個別に設定可能です。タイムアウトが頻発する場合は、リトライ処理を実装することを推奨します。3回までリトライし、それでも失敗した場合はエラーログに記録して次の企業の処理に進む、という設計が実践的です。

より高度な自動化を実現するには

Excel・スプレッドシート連携の限界

GAS・Power Automate・VBAによる企業情報API連携は、小〜中規模のデータ処理には有効ですが、事業の成長に伴いいくつかの限界が見えてきます。

  • 処理件数の制約:GASには1回の実行時間6分という制限があり、大量データの一括処理には向かない。VBAもExcelのメモリ制約により、数万件規模のデータ処理ではパフォーマンスが低下する
  • データの一元管理が困難:複数のスプレッドシートやExcelファイルに企業データが分散すると、データの整合性維持が難しくなる。同じ企業が複数のファイルに重複して登録される問題も発生しやすい
  • リアルタイム性の欠如:スケジュール実行(日次・週次)では、企業の最新動向をリアルタイムに反映できない。求人情報やニュース等のアクティビティデータを即座にキャッチするにはWebhookやストリーミング連携が必要
  • チーム利用時の競合:複数の営業担当者が同じスプレッドシートを同時編集すると、データの競合や上書きが発生するリスクがある

SalesNow APIによるシステム統合

こうした限界を解決するには、企業情報APIをCRM/SFAやMAツールなどの業務システムに直接統合する方法が有効です。SalesNow APIは、1,400万件超の国内法人データを提供する企業情報APIとして、毎日230万件以上のデータ更新により常に最新の企業情報を取得できます。

SalesNowの導入企業では、API連携によるデータ自動化で営業担当者1人あたり月8.6時間の工数削減を実現しています。Excel・スプレッドシートでの手作業と比較して、大幅な効率化が可能です。

SalesNow APIは、クラウドワークスやパーソルキャリアなどの企業に導入されており、Salesforce・HubSpotとの連携による営業データの自動補完で商談数2.3倍の成果を実現した事例もあります。

SalesNow APIの主な連携機能は以下のとおりです。

  • 法人番号ベースの名寄せ:法人番号をキーにして企業データを一意に識別。CRM/SFA内の重複レコードを自動で検知・統合できる
  • 部署直通電話番号の取得:代表電話番号だけでなく、営業先となる部署の直通電話番号を取得可能。テレアポの受付突破率を大幅に向上させる
  • アクティビティデータの連携:求人情報・ニュースリリース・決算情報などの企業の最新動向をAPIで取得。「今アプローチすべき理由」の根拠となるデータをシステムに自動連携できる
  • Salesforce・HubSpot連携:主要CRM/SFAとの連携モジュールが用意されており、API開発の工数を大幅に削減できる

Excel・スプレッドシートでのAPI連携は、企業情報活用の第一歩として有効です。しかし、営業組織の成長に伴い、より高度なデータ活用が求められる段階では、SalesNow APIのような包括的な企業データ基盤の導入を検討することをおすすめします。APIの具体的な活用シーンや導入事例を参考に、自社に最適な連携方法を選択してください。

まとめ

本記事では、企業情報APIとExcel・Googleスプレッドシートを連携する3つの方法を解説しました。要点を整理します。

  • GAS(Google Apps Script):Googleスプレッドシートに標準搭載されたスクリプト環境。UrlFetchAppでAPIを呼び出し、トリガーで定期実行が可能。非エンジニアでも比較的取り組みやすい
  • Power Automate(RPA):Microsoft 365環境でのノーコード自動化ツール。HTTPコネクタでAPIを呼び出し、Excelテーブルにデータを書き込む。プログラミング不要でGUIで構築できる
  • Excel VBA:デスクトップ版Excelのマクロ機能。MSXML2オブジェクトでHTTPリクエストを送信。ローカル環境で完結し、セキュリティポリシーが厳しい企業に適している
  • よくあるトラブル:認証エラー(APIキー確認)、レート制限(ウェイト挿入・バッチ処理)、文字化け(URLエンコード)、タイムアウト(リトライ処理)の4つが代表的
  • 高度な自動化:データ量の増加やリアルタイム性の要求が高まった場合は、SalesNow APIなどを活用したCRM/SFA直接連携への移行を検討する

企業情報APIとExcel・スプレッドシートの連携は、営業データの自動化における最も手軽な第一歩です。まずはGASやPower Automateで小規模な自動化を始め、効果を実感した上で段階的に連携範囲を拡大していくアプローチを推奨します。APIの導入手順については「企業情報APIの導入手順|APIキー取得から実装まで解説」で詳しく解説していますので、あわせてご覧ください。

よくある質問

Q. 企業情報APIとExcel・スプレッドシートを連携させるメリットは何ですか?

企業情報APIとExcel・スプレッドシートを連携させることで、手動でのデータ収集・コピー貼り付け作業を自動化できます。例えば企業名一覧を入力するだけで、住所・電話番号・従業員規模・部署情報が自動的に補完されるようになります。週数時間かかっていたデータ整備が数分で完了し、営業チームの生産性が大幅に向上します。

Q. Google Apps Script(GAS)で企業情報APIを呼び出す方法はありますか?

Google Apps Script(GAS)でURLFetchApp.fetchを使用することで、スプレッドシート上から企業情報APIを直接呼び出せます。例えばA列に企業名を入力し、GASで自動的にAPIを呼び出してB列に電話番号・C列に担当者情報を補完するスクリプトを作成できます。GASは無料で利用でき、スプレッドシートとの親和性が高い点が特徴です。

Q. SalesNow APIはスプレッドシート連携に対応していますか?

SalesNow APIはRESTful API形式に対応しており、Google Apps Script・Excel VBA・Power Automateなど様々なツールからの呼び出しが可能です。1,400万件超・毎日230万件更新のリアルタイムデータをスプレッドシートに自動反映でき、部署直通電話番号・組織図・求人情報の自動補完にも対応しています。