メインコンテンツへスキップ
HubDBは、スプレッドシートと同じように、テーブル(表)の行、列、セルでデータを表現するリレーショナル データ ストアです。HubDBテーブルをHubSpotアカウント内で追加したり変更したりできますが、ここに記載されているAPIエンドポイントを使用することもできます。ウェブサイトやプログラマブルEメールでHubDBテーブルのデータを使用する方法については、HubSpotのCMS開発者向けドキュメントを参照してください。 HubSpotウェブサイトページと同様に、HubDBテーブルはdraftバージョンとpublishedバージョンをサポートしています。これにより、公開中のページに影響を与えずに、テスト用または手動による承認プロセス用にテーブル内のデータを更新することができます。下書きテーブルと公開テーブルについて詳細をご確認ください。 公開アクセスを許可するようにテーブルが設定されている場合、クエリーパラメーターportalIdを介してHubSpotアカウントIDを指定すると、認証なしでテーブルと行の公開バージョンにアクセスできます。 HubDB APIのv2から移行しようとしている場合は、最新の(v3)APIの変更点について詳しくご確認ください。

レート制限

HubDBのAPIリクエストには、リクエストの種類に応じて異なるレート制限が適用されます。
  • 認証を必要としないGETリクエスト(クライアントサイドのJavaScriptリクエストを含む)は、1秒あたり10件に限定されます。これらのリクエストは1日あたりの上限には計上されません。
  • 認証を使用するその他全てのリクエストには、標準的な制限が適用されます。

下書きテーブルと公開テーブル

HubDBテーブルには下書きバージョンと公開バージョンの両方があります。公開バージョンは非公開にすることもできます。非公開にしてテーブル内のデータを更新すれば、他の公開ページに影響を与えずに、ページのプレビューやテスト、手動による承認プロセスを行うことができます。 このAPIでは、テーブルの下書きバージョンと公開バージョンに別々のエンドポイントが指定されています。例えば、以下のエンドポイントにGETリクエストを送信することで、テーブルの公開バージョンを取得できます。 /cms/v3/hubdb/tables/{tableIdOrName} また、下書きはできているが未公開になっているコンテンツを取得するには、URLの末尾に/draftを追加します。 /cms/v3/hubdb/tables/{tableIdOrName}/draft 下書きデータをレビューした後、HubSpotでプッシュできます。/push-liveエンドポイントを使用することもできます。また、エンドポイント/resetを介して下書きデータを破棄することもでき、こうすれば中断なしでデータを現在の公開バージョンに戻すことができます。

HubDBテーブルを作成する

HubDBテーブルを作成するには、POSTリクエストを/cms/v3/hubdb/tablesに送信します。 リクエスト本文で、次の必須フィールドを指定します。 さらに、次の任意のフィールドを指定できます。 列を追加せずにテーブルを作成するためのリクエストは、次のような内容になります。

テーブル列の追加

HubDBテーブルの各列は、次のプロパティーを使用して定義可能です。 上記のフィールドを使用して新しいHubDBテーブルを作成するためのリクエストは、次のような内容になります。
テーブルの作成後、列には昇順のIDが割り当てられます。既存の列を更新する際には、入力オブジェクトに列のidフィールドを含めます。

テーブル行の追加

行を追加するには、APIを使用して手動で行う方法と、CSVファイルから行をインポートする方法があります。 HubDBテーブルに行を追加するには、POSTリクエストを/cms/v3/hubdb/tables/{tableIdOrName}/rowsに送信します。 各テーブル行には、次のフィールドを含めることができます。 上記のフィールドを使用したリクエストの例を以下に示します。

CSVからの行のインポート

CSVファイルからHubDBテーブルにデータをインポートするには、POSTリクエストを/cms/v3/hubdb/tables/{tableIdOrName}/draft/importに送信します。 インポートエンドポイントは、次のようなmultipart/form-data POSTリクエストを受け入れます。
  • config**:**インポートで使用されるJSON形式のオプションのセット。
  • file**:**インポートするCSVファイル。
configには、次のフィールドをJSON文字列として含めます。 上記の表を使用したconfig JSONの例を以下に示します。
cURLを使用する場合、コマンドは次のようになります。

日付の書式設定

データを日付型の列にインポートする際は、さまざまな日付形式を使用できます。 整数
  • yyyy/mm/dd
  • yyyy/mm/dd
  • mm/dd/yyyy
  • mm/dd/yy
これらの形式では、日付の前に月を指定する必要があります(つまりdd/mm/yyという形式は使用できません)。整数の区切り文字としてハイフン(-)またはスラッシュ(/)を使用できます。 準標準の日付形式 整数ベースの日付形式ほど標準化されていない日付形式をインポートすることもできます。例:
  • The 1st of March in the year 2022
  • Fri Mar 4 2022
  • March 4th '22
相対日付 HubSpotでは、現在の日付を基準とする次の日付形式が解析されます:
  • next Thursday
  • Today
  • tomorrow
  • 3 days from now

リセットオプション

CSVファイルからHubDBテーブルにデータをインポートするときに、resetTableフィールドをtrueまたはfalse(既定)に設定すると、HubDBの行データを上書きするかどうかを管理できます。
  • resetTabletrueに設定されている場合:
    • CSVファイル内の行に行ID列(hs_id)がない場合、または行IDが0と指定されている場合、それらの行は、生成された新しい行IDを使って挿入されます。
    • CSVファイル内の行IDがターゲットテーブルに既に存在する場合、テーブルの既存の行は入力ファイル内の新しい値で更新されます。
    • テーブルに行が存在するものの、入力CSVファイルにその行に対応する行IDがない場合、その行はターゲットテーブルから削除されます。
    • 入力CSVファイル内の行IDがターゲットテーブル内に存在しない場合は、生成された新しい行IDを使ってそれらの行が挿入され、入力ファイル内で指定されている行IDは無視されます。
    • 入力CSVファイル内に行IDの列が1つも含まれていない場合、ターゲットテーブルから全ての行が削除され、入力ファイル内の行が、生成された新しい行IDを使って挿入されます。
  • resetTablefalse(既定)に設定されている場合:
    • CSVファイル内の行IDがターゲットテーブルに既に存在する場合、テーブルの既存の行は入力ファイル内の新しい値で更新されます。
    • テーブルに行が存在するものの、入力CSVファイルにその行に対応する行IDがない場合、その行はターゲットテーブルから削除されず、変更が加えられないままの状態になります。
    • 入力CSVファイル内の行IDがターゲットテーブル内に存在しない場合は、生成された新しい行IDを使ってそれらの行が挿入され、入力ファイル内で指定されている行IDは無視されます。
    • CSVファイル内の行に行ID列がない場合、または行IDが0と指定されている場合、それらの行は、生成された新しい行IDを使って挿入されます。

HubDBデータの取得

テーブルの詳細を取得するか、またはテーブルの特定の行を取得するかに応じて、HubDBデータを取得するにはさまざまな方法があります。
  • 公開されている全てのテーブルからテーブルの詳細を取得するにはGETリクエストを/cms/v3/hubdb/tablesに送信します。
  • 公開されている特定のテーブルからテーブルの詳細を取得するには、GETリクエストを/cms/v3/hubdb/tables{tableIdOrName}に送信します。
  • 特定のテーブルから全ての行を取得するには、GETリクエストを/cms/v3/hubdb/tables{tableIdOrName}/rowsに送信します。
  • テーブルから特定の行を取得するには、GETリクエストを/cms/v3/hubdb/tables{tableIdOrName}/rows/{rowId}に送信します。
行データを取得する際に、フィルターを適用して結果を絞り込んだり、並べ替えたりできます。 公開アクセスを許可するようにテーブルが設定されている場合、クエリーパラメーターportalIdを介してHubSpotアカウントIDを指定すると、認証なしでテーブルと行の公開バージョンにアクセスできます。

返された行に対するフィルターの適用

HubDBテーブルデータを取得する際に、特定のデータを取得するためのクエリーパラメーターとしてフィルターを適用できます。フィルター クエリー パラメーターは、columnName__operatorという形式で構成されます。 例えば、「bar」 という名前の数値列がある場合、「bar」 が10より大きい行だけを結果に含めるには、&bar__gt=10とします。 全てのフィルターはAND結合されます(現在のところ、ORフィルターはサポートされていません)。 フィルターを適用する際は、次の点に注意してください。
  • multiselectの列の値を渡すときには、各値を半角カンマで区切る必要があります(例:multiselect_column__contains=1,2)。
  • datetimeフィルターでは、現在の時刻を基準とする値を指定する目的で、タイムスタンプの代わりに相対日付を使用できます。例えば-3hは今から3時間前のタイムスタンプに相当し、10sは10秒後のタイムスタンプに相当します。サポートされている時間単位は、ms(ミリ秒)、s(秒)、m(分)、h(時間)、d(日)です。現在の時刻を使用するには、値をゼロにします(0s)。
  • これらのフィルター用に組み込むhs_id列はnumberタイプ、hs_created_at列はdatetimeタイプ、hs_path列およびhs_name列はtextタイプです。
以下に、各タイプの列に適用できる演算子について説明します。

返された行の並べ替え

HubDBデータを取得するときに、クエリーパラメーターとして並べ替えを適用することで、返されるデータの順序を指定できます。データを並べ替えるには、次のようにsortクエリーパラメーターを追加して、列名を指定します。 &sort=columnName 既定では、列が指定されている順序でデータが返されます。これを逆順で並べ替えるには、列名に-を追加します。 &sort=-columnName このパラメーターを複数指定することにより、複数の列を基準に並べ替えができるようになります。 列を基準とした並べ替えに加えて、次の3つの関数を使用可能です。
  • **geo_distance(location_column_name、緯度、経度):**所在地列の名前と座標を入力として受け入れ、指定された所在地列の値と指定された座標の間の距離が長い順に行を返します。
  • **length(column_name):**列の名前を入力として受け入れ、(文字列として計算される)列値の長さの順に行を返します。
  • **random():**ランダムな順序で行を返します。
この関数では逆順もサポートされます。例えば次のgeo_distanceは、距離が最も遠いものを最初にしてアイテムを返します。 sort=-geo_distance(location_column,42.37,-71.07)

動的ページ用のHubDBテーブルの設定

HubSpotのCMSを使用すると、HubDBテーブルをデータソースとして使用して動的ページを生成することができます。例えば、経営陣のメンバーごとに1行ずつ含むテーブルを作成し、ページに表示させたい情報が入った列をそれに含めることができます。ページの動的データソースとしてそのテーブルを選択すると、サマリー項目として全行を表示するリストページがそのページによって生成され、さらに行ごとに個別のページも生成されて、ブログ リスト ページとブログ記事ページに似た状態になります。 コンテンツエディターでテーブルをデータソースとして選択できるようにするには、useForPagetrueに設定する必要があります。必要に応じてdynamicMetaTagsを含めると、各ページのメタデータにどの列を使用するかを指定できます。 例えば次のコードでは動的ページ用のテーブルを作成して、ページのメタデータに使われる3つの列を指定します。

v3での変更点

  • テーブルにはnamelabelの両方が必要です。テーブルの作成後に、この「name」を変更することはできません。「name」には半角の英小文字、数字、アンダースコアのみ含めることができますが、数字で始めることはできません。namelabelはどらちも、アカウント内で一意である必要があります。
  • APIは、URLパスの中でテーブルidnameの両方をサポートします。
  • 行をGETするエンドポイントは、valuesフィールドでidではなく列nameを返します。また、行をPOSTPUTPATCHするエンドポイントは、valuesフィールドでidではなく列nameを必要とします。
  • 行を更新するPATCHエンドポイントで、スパース更新を使用できるようになりました。スパース更新とは、更新する必要のある列値だけを指定できることを意味します(以前のバージョンでは、全ての列値を指定する必要がありました)。複数選択型の列のように、値のリストを使用して列を更新する場合は、全ての値を含むリストを指定する必要があります。列の値を削除するには、リクエスト内でその列の値をnullとして指定する必要があります。
  • 行を更新するPATCHエンドポイントを優先し、行のセルをgetupdatedeleteするエンドポイントを削除しました。
  • インポートエンドポイントでは、JSON形式のオプションで既存のフィールドとともに任意指定フィールドidSourceColumnを使用できるようになりました。このフィールドを使用すると、行IDが格納されているCSVファイル内の列を指定できます。新しい行を既存の行の新しい値とともにインポートするには、新しい行の行IDには単に0を指定し、既存の行には有効な行IDを指定できます。詳細については、以下の「インポート」セクションをご参照ください。さらに、JSON形式のオプションに含まれる列マッピングのターゲットフィールドで、列の名前またはIDを使用することもできます。
  • 複製エンドポイントには、新しい名前と新しいラベルが必要です。
最終更新日 2026年2月10日