HubDB

Last updated:
APPLICABLE PRODUCTS
  • Marketing Hub
    • Enterprise
  • CMS Hub
    • Professional or Enterprise

HubDBは、データを行、列、セルに保存する、スプレッドシートによく似たテーブルを作成するために使用するツールです。HubDBテーブルの列、行、およびその他の設定は、必要に応じてカスタマイズできます。例えば、以下のような処理に対応できます。

  • 外部メカニズムからのフィードバックを保存し、後で取得できるようにする
  • 動的CMSページを作成するために使用可能な構造化データを保存する(「CMS Hub Professional」および「Enterprise」のみ)
  • プログラム可能なEメールで使用するデータを保存する(「Marketing Hub Enterprise」のみ)

hubdb-table-example0HubDBテーブルには、HubSpot内からアクセスすることも、HubDB APIを介してアクセスすることもできます。そのためテーブルのデータを取得する場合、使用ケースによってさまざまな方法があります。具体的には次の方法が挙げられます。

  • HubDB API(英語)を介して外部からデータのクエリーを実行する
  • HubSpotのHubLマークアップタグを使用してデータを構造化データとしてCMSに取り込む
  • HubDB APIとサーバーレス関数を使用して対話型のウェブアプリ環境を提供する

注:

HubDBの技術的な制限事項

HubSpotの一般的なAPI制限に加えて、HubDBには次の技術的な制限事項があることにご注意ください。

  • アカウントの制限:
    • アカウント1件あたりのHubDBテーブル数:1,000件
    • アカウント1件あたりのHubDB行数:100万行
  • テーブルの制限:
    • テーブル1件あたりの列数:250列
    • HubDBテーブル1件あたりの行数:10,000行
    • テーブル名1件あたりの文字数:700文字
    • テーブルラベル1件あたりの文字数:700文字
  • 列の制限:
    • リッチテキスト列1列あたりの文字数:65,000文字
    • 各テキスト列の文字数:10,000文字
    • 列名1件あたりの文字数:700文字
    • ラベル1件あたりの文字数:700文字
    • 列の説明1件あたりの文字数:300文字
    • 列内の選択可能なオプション1件あたりの文字数:700文字
  • ページの制限:
    • CMSページ1ページあたりのhubdb_table_rows HubL関数の呼び出し:10回
    • 同じHubDBテーブルを使用する動的ページ:10ページ
    • 動的ページが有効なHubDBではパスが必ず小文字で設定されるため、これらのページへのURLでは大文字と小文字が区別されません。

HubDBテーブルを作成する

HubDBテーブルを作成するには、HubSpotのUIまたはHubDB APIを使用します。

全ての新しく作成されたテーブルのステータスは、下書きとして設定されます。テーブルは公開するまで、HubLまたはAPIによるデータ出力を目的として使用することができません。

HubDBテーブルの設定を構成する(CMS Hub ProfessionalおよびEnterpriseのみ)

HubDBテーブルの設定を管理するには、[アクション]>[設定を管理]の順にクリックします。以下の設定が利用可能です。

  • パブリックAPIアクセスを許可:既定では、テーブル内のデータはアプリ内または認証済みAPIリクエストでのみ閲覧できます。認証されていないAPIリクエストでテーブル内のデータをクエリーできるようにするには、この設定を有効にします。 
  • 行データを使用した動的ページ作成を有効化:HubDBデータを使用した動的ページを作成できるようにするには、この設定を有効にします。このオプションを有効にすると、次の追加オプションが使用可能になります。
    • ドロップダウンメニューを使用して、メタディスクリプション、キービジュアル、正規URLデータを動的ページに取り込むための列を選択します。新しいテーブルの場合は、これらのデータを格納する新しい列を作成する必要があります。
      • メタディスクリプション:テキストタイプの列にする必要があります。
      • キービジュアル:画像タイプの列にする必要があります。
      • Canonical URL:URLタイプの列にする必要があります。
    • このテーブル内の他のHubDBテーブルを参照するには、[子テーブルの使用を許可]チェックボックスをオンにします。また、[子テーブルのリストページを自動的に作成]を選択して、HubSpotが自動的に中間リスティングページを作成できるようにすることもできます。詳しくはHubDBを使用したマルチレベルの動的ページを作成する方法(英語)をご確認ください。

manage-hubdb-table-setting

注:親テーブルで、同じ親テーブルを参照する子テーブルを参照することはできません。ループになり、親テーブル内で子テーブルを選択しようとするとエラーが発生する結果になるためです。

HubDBアーキテクチャー

テーブル

テーブル(表)とは、行と列から成る2次元構造です。テーブルが作成されるとグローバル固有ID(GUID)が付与され、このIDを使用してテーブルを識別できます。 

行は、テーブルの横方向のスライスです。通常、1つの行の全ての値は1つのプライマリーIDの下で関連付けられています。スプレッドシートアプリケーションの場合、行は1から始まる番号で表されます。各テーブル行には、作成時にグローバル固有IDが指定されます。 

列はテーブルの縦方向のスライスです。各列にはタイプがあります。スプレッドシートアプリケーションの場合、列はA、B、Cなどの英字で表されます。次の2種類のテーブル列があります。

テーブル内の各行には、2つの組み込み列があります。

Use this table to describe parameters / fields
Description
hs_id

この行に自動的に割り当てられた、数値のグローバル固有ID

hs_created_at

この行が作成された時点のタイムスタンプ

hs_path

動的ページで使用される場合、ページのURLパスの最後の文字列

hs_name

動的ページで使用される場合、ページのタイトル

注:HubDBのリッチ テキスト エリア列は65,000文字に制限されています。詳細については変更履歴の通知(英語)をご参照ください。

テーブルに追加できるカスタム列の数に制限はありません。カスタム列は、テキスト、リッチテキスト、数値、通貨、日付、時刻、画像、動画、選択値、または場所(緯度と経度)にできます。 

列が作成されると、テーブル内で1から始まる固有の数値IDが割り当てられます。列IDは大きくなっていきますが、必ずしも連続した値にはなりません。列IDは再利用できないので、テーブルに12という2列がある場合、2番目の列を削除すると次に作成される列のIDは3になります。

セル

列と行が交差した「セル」には、値が格納されます。セルの読み取りと更新は、セル単位で個別に、または行の一部として行うことができます。セルの値をnullに設定する操作は、セルの値の削除に相当します。

HubLを使用したHubDBデータへのアクセス

HubLを使用すると、ウェブサイトページで構造化コンテンツとして使用するHubDBデータを取得できます。この後、HubLを使用してテーブル、行、列のデータを取得する方法を詳しく説明します。

注:下書きされたHubDBテーブルデータはページエディターとライブプレビューに表示されますが、公開されたHubDBコンテンツのみがライブページに表示されます。エディターに表データが表示されているか、ライブページに表示されていないプレビューが表示されている場合は、その表データの追加後に表が公開されていることを確認します。

行の取得

テーブルののをリストを取得するには、HubL関数hubdb_table_rows()を使用します。テーブルには、テーブルのIDまたは名前でアクセスできます。HubSpotアカウント間でのコード移植に役立つ可能性があるため、HubDBテーブルは名前で参照することをお勧めします。新しいテーブルの作成時に変更不可能なテーブル名を設定します。この名前は、テーブルエディター内の[アクション]>[設定を管理]を選択することでいつでも確認可能です。テーブルのIDは、テーブルエディターのアドレスバー、またはHubDBテーブルダッシュボードのID列に表示されます。 

テーブル作成モーダルのスクリーンショット

以下は、hubdb_table_rows()を使用したデータ取得の例です。

{% for row in hubdb_table_rows(<tableId or name>, <filterQuery>) %} the value for row {{ row.hs_id }} is {{ row.<column name> }} {% endfor %}

注:既定では、返される行の最大数は1,000です。それより多くの行を取得するには、関数クエリーでlimitを指定します。例として、以下のような場合が挙げられます。

hudb_table_rows (12345, "random()&limit=1500")

<filterQuery>の構文は、HTTP APIと同じです。例えばhubdb_table_rows(123, "employees__gt=10&orderBy=count")の場合、employees列の値が10よりも大きい行が、count列の順に並べ替えた状態で返されます。<filterQuery>の全ての任意パラメーターのリストは、テーブル行の取得方法に関するページ(英語)でご確認いただけます。

異なる<filterQuery>パラメーターを指定した複数の行クエリーを使用する代わりに、1つのクエリーを使用して、selectattr()またはrejectattr()フィルターで次のように行を絞り込む方法が適切です。

{% set all_cars = hubdb_table_rows(<tableId or name>) %} {% set cars_with_windows = all_cars|selectattr('windows') %} {% set teslas = all_cars|selectattr('make','equalto','tesla') %}

1つの行を取得するには、HubL関数hubdb_table_row()を使用します。

{% set row = hubdb_table_row(<tableId or name>, <rowId>) %} the value for {{ row.hs_id }} is {{ row.<column name> }}

組み込み列とカスタム列の名前では大文字と小文字は区別されません。HS_IDhs_idの動作は同じです。

行の属性

Use this table to describe parameters / fields
属性Description
row.hs_id

この行のグローバル固有ID

row.hs_path

動的ページを使用する場合、この文字列は「ページのパス」列の値で、ページのURLパスの最後の部分です

row.hs_name

動的ページを使用する場合、この文字列は行の「ページタイトル」列の値です

row.hs_created_at

行が作成された時点のUnixタイムスタンプ

row.hs_child_table_id

動的ページを使用する場合、これは行のデータを提供する別のテーブルのIDです

row.column_name

列名を使用してカスタム列の値を取得します

row["column name"]

列名を使用してカスタム列の値を取得します

テーブルメタデータの取得

テーブルの名前、列、最終更新日などのメタデータを取得するには、hubdb_table()関数を使用します。

{% set table_info = hubdb_table(<tableId or name>) %}

テーブルの属性

ここでは、前述のコードでhubdb_table()から代入された変数を例に、関連する属性を示します。実際にご使用の変数名とは異なる場合があります。
利便性を考慮して、変数に属性値を代入することをお勧めします。または、次の方法を使用できます。
{{ hubdb_table(<tableId>).attribute }}

Use this table to describe parameters / fields
属性Description
table_info.id

テーブルのID

table_info.name

テーブルの名前

table_info.columns

列情報のリスト。この属性の情報に対して、forループによる反復処理を実行できます

table_info.created_at

テーブルが初めて作成された時点のタイムスタンプ

table_info.published_at

このテーブルが公開された時点のタイムスタンプ

table_info.updated_at

このテーブルの最終更新時点のタイムスタンプ

table_info.row_count

テーブル内にある行の数

列メタデータの取得

{% set table_info = hubdb_table_column(<tableId or name>, <columnId or column name>) %}

テーブルの列に関する情報(ラベル、タイプ、オプションなど)を取得するには、hubdb_table_column()関数を使用します。

列の属性

ここでは、前述のコードでhubdb_table_column()から代入された変数を例に、関連する属性を示します。実際にご使用の変数名とは異なる場合があります。
利便性を考慮して、変数に属性値を代入することをお勧めします。または、次の方法を使用できます。
{{ hubdb_table_column(<tableId>,<columnId or column name>).attribute }}

Use this table to describe parameters / fields
属性Description
table_info.id

列のID

table_info.name

列の名前

table_info.label

列に使用するラベル

table_info.type

この列のタイプ

table_info.options

select列タイプの場合、これはoptionIdoption情報のマップです

table_info.foreignIds

foreignId列タイプの場合、foreignIdのリストです(idプロパティーとnameプロパティーが含まれる)

列のメソッド

Use this table to describe parameters / fields
メソッドDescription
getOptionByName("<option name")

select列タイプの場合、オプション名に基づいてオプションの情報を取得します

リッチテキスト列

richtext列タイプは、モジュールのリッチ テキスト フィールドと同様に機能します。

データはHTMLとして保存され、HubDB UIにテキスト編集インターフェイスが表示されます。ただし、HubSpotのUIを使用してHubDBテーブルを編集する場合、ソースコードを直接編集することはできません。これにより、技術者以外のユーザーが無効なHTMLを入力できないようにして、サイトの外観や機能に想定外の問題が発生する事態を防いでいます。埋め込みコードや追加のカスタムHTMLが必要な場合は、リッチ テキスト エディターの埋め込み機能を使用してカスタムコードを配置できます。 


参考になりましたか?
こちらのフォームではドキュメントに関するご意見をご提供ください。HubSpotがご提供しているヘルプはこちらでご確認ください。