ADVERTISEMENT

【Googleスプレッドシート】HubSpotのCRMデータを取込!Private App Tokenでの接続

【Googleスプレッドシート】HubSpotのCRMデータを取込!Private App Tokenでの接続
🛡️ 超解決

HubSpotのCRMデータをGoogleスプレッドシートに取り込みたいとお考えではありませんか。営業データや顧客リストをスプレッドシートで集計・分析できれば、レポート作成が格段に効率化します。本記事では、Private App Tokenを使ったHubSpot連携の方法を詳しく解説します。この方法ならOAuthの複雑な認可フローを省略でき、セキュアかつシンプルにデータを取得できます。

【要点】Private App TokenでHubSpotデータをスプレッドシートに取り込む手順

  • Private App Tokenの作成: HubSpotの管理画面から専用トークンを発行します。権限をスコープ単位で制御できるため、必要なデータだけにアクセスできます。
  • Apps ScriptでAPIを呼び出す: スプレッドシートに組み込まれたスクリプトエディタで、トークンを使ってHubSpot REST APIにリクエストを送信します。
  • データをシートに出力: 取得したJSONデータをパースし、スプレッドシートのセルに整形して書き込みます。定期実行も可能です。

ADVERTISEMENT

HubSpot Private App Tokenを使う理由

HubSpotは豊富なCRMデータをAPIで公開しています。従来のOAuth 2.0認証はリダイレクトURLの設定やリフレッシュトークンの管理が煩雑です。一方、Private App Tokenはアプリケーション内で完結する認証方式で、トークンの発行と失効を簡単に管理できます。スプレッドシートとの連携では、このトークンをスクリプト内で直接使用するため、認証フローが大幅に簡略化されます。また、トークンには読み取り専用の権限を割り当てられるため、誤ったデータ変更を防止できます。

Private App TokenでHubSpotデータを取り込む手順

1. HubSpotでPrivate Appを作成しトークンを発行する

  1. HubSpotアカウントにログインする
    管理画面の右上にある歯車アイコンから「設定」を開きます。
  2. 「統合」→「Private App」を選択する
    左側のメニューから「統合」をクリックし、その中の「Private App」を選びます。
  3. 「Create private app」ボタンを押す
    アプリ名を入力します(例:「スプレッドシート連携」)。
  4. スコープ(権限)を設定する
    「Scopes」タブで必要なデータの読み取り権限を有効にします。例えば「crm.objects.contacts.read」「crm.objects.companies.read」などです。書き込み権限は必要なければ外します。
  5. トークンを生成する
    画面下部の「Create」ボタンをクリックし、表示されたトークンを安全な場所にコピーします。このトークンは後でスプレッドシートのスクリプトに記述します。

2. スプレッドシートでApps Scriptを開きスクリプトを記述する

  1. スプレッドシートを開く
    データを取り込みたいスプレッドシートを新規または既存で開きます。
  2. 「拡張機能」→「Apps Script」を開く
    メニューから「拡張機能」をポイントし、「Apps Script」をクリックします。
  3. スクリプトエディタでコードを記述する
    以下のサンプルコードを貼り付けます。
    function getHubSpotContacts() {
      const token = 'YOUR_PRIVATE_APP_TOKEN'; // ここにトークンを設定
      const url = 'https://api.hubapi.com/crm/v3/objects/contacts';
      const options = {
        'method': 'GET',
        'headers': {
          'Authorization': 'Bearer ' + token,
          'Content-Type': 'application/json'
        },
        'muteHttpExceptions': true
      };
      const response = UrlFetchApp.fetch(url, options);
      const data = JSON.parse(response.getContentText());
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      // ヘッダー行を設定
      sheet.getRange(1, 1, 1, 3).setValues([['ID', 'First Name', 'Last Name']]);
      // データを二次元配列に変換
      const rows = data.results.map(contact => [
        contact.id,
        contact.properties.firstname,
        contact.properties.lastname
      ]);
      // シートに書き込み(2行目から)
      if (rows.length > 0) {
        sheet.getRange(2, 1, rows.length, 3).setValues(rows);
      }
    }
    
  4. トークンを設定し保存する
    コード中の「YOUR_PRIVATE_APP_TOKEN」を実際のトークンに置き換えます。Ctrl+Sで保存します。

3. スクリプトを実行してデータを取り込む

  1. 関数を選択して実行する
    スクリプトエディタのツールバーで「getHubSpotContacts」を選択し、再生ボタンをクリックします。
  2. 初回は承認が必要
    「権限の確認」ダイアログが表示されたら、自分のGoogleアカウントを選び、「許可」をクリックします。このスクリプトは外部サービス(HubSpot)へのアクセスとスプレッドシートの編集権限を要求します。
  3. データがシートに表示される
    実行が成功すると、アクティブなシートのA1セルからID、名、姓が書き込まれます。

4. トリガーを設定して定期的に更新する(オプション)

  1. スクリプトエディタでトリガーを追加する
    左側の時計アイコンをクリックし、「トリガーを追加」を選びます。
  2. 実行間隔を設定する
    「時間ベースのトリガー」を選択し、例えば1時間ごとや毎日など希望の頻度を指定します。
  3. 保存する
    設定を保存すると、自動的にスクリプトが実行されシートが更新されます。

Private App Token使用時の注意点

トークンの漏洩リスク

Private App Tokenは強力な認証情報です。スクリプト内に直接記述するため、スプレッドシートを共有する際は注意が必要です。スクリプトエディタはシートの編集権限があるユーザー全員が閲覧可能です。機密性の高いトークンはスクリプトプロパティに保存する方法が推奨されます。具体的には、スクリプトエディタの「プロジェクトの設定」からスクリプトプロパティを追加し、コード内で PropertiesService.getScriptProperties().getProperty('HUBSPOT_TOKEN') のように参照します。

APIレート制限

HubSpot APIには1秒あたりのリクエスト数制限があります。大量のデータを取得する場合は、ページネーション処理を実装するか、リクエスト間隔を空ける必要があります。また、有料アカウントによって制限が異なるため、公式ドキュメントで確認してください。

権限スコープの最小化

Private Appを作成する際は、必要なデータの読み取り権限のみを付与します。書き込み権限まで有効にすると、誤操作でデータを変更するリスクがあります。特にスプレッドシート経由での編集を意図していない場合は、読み取り専用に絞りましょう。

ADVERTISEMENT

Private App TokenとOAuth 2.0の比較

項目 Private App Token OAuth 2.0
認証の複雑さ シンプル、リダイレクト不要 複数ステップ、リダイレクトURL設定が必要
トークンの有効期限 無期限(手動で失効可能) 一時的(リフレッシュトークンで更新)
適用範囲 自社アカウント内のデータのみ 他アプリからのアクセスも可能
セキュリティリスク トークン漏洩時の影響が大きい リフレッシュトークンの管理が必要

まとめ

Private App Tokenを使うことで、HubSpotのCRMデータをGoogleスプレッドシートに簡単に取り込めるようになります。今回は連絡先データの取得方法を紹介しましたが、会社や商談など他のオブジェクトも同様のAPIで取得可能です。また、Apps Scriptのトリガー機能を利用すれば、データを定期的に自動更新できます。次のステップとして、取得したデータをQUERY関数で集計したり、他のスプレッドシート関数と組み合わせてダッシュボードを作成してみてはいかがでしょうか。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。