HubDB

APPLICABLE PRODUCTS
  • Marketing Hub
    • Enterprise
  • CMS Hub
    • Professional or Enterprise

HubDBは、スプレッドシートのようにテーブル(表)の行、列、およびセルで表現されるリレーショナル データ ストアです。HubDBテーブルには、HubSpotアカウント上で直接アクセスして編集できます。その後、次のように用途に合わせてテーブルのデータを取得できます。

  • HubDB API経由で外部からデータを照会する
  • HubSpotのHubLマークアップタグを使用してデータをCMSに取り込む
  • サーバーレス関数からHubDB APIを利用して対話型のウェブアプリ環境を提供する

注:Marketing Hub Enterpriseをご利用の場合は、マーケティングEメールのコンテンツのレンダリングにHubDBを使用できます。ただしEメールでは、コンタクトプロパティーを使用してHubDBテーブルを絞り込むことはできません。 

HubDBデータをページで使用するには、CMS HubのProfessionalまたはEnterpriseが必要です。

HubDBへのアクセス権の取得

HubDBを使用するユーザーに割り当て可能なアクセス権は2種類あります。いずれの設定もユーザー権限にあります。アクセス権を割り当てるには、[設定]>[ユーザーとチーム]に進み、ユーザーの上にポインターを置きます。次に、アクションメニューから[編集]を選択します。

HubDBの技術的な制限事項

  • HubDBテーブルあたりの行数:10,000行
  • 1アカウントあたりのHubDBテーブル数:1,000件
  • CMSページあたりのテーブルスキャン数:10。hubdb_table_rows()への1回の呼び出しとして定義されます。
  • HubSpotのAPIに関する一般制限事項
  • 動的ページが有効になっているHubDBのパスは小文字にする必要があります。これにより、ページのURLについて大文字と小文字が区別されなくなります。

最初のテーブルの作成

HubDBエディターアプリを開き、[テーブルを作成]ボタンをクリックします(またはAPIを使用してテーブルエンドポイントを作成します
注:新しく作成された全てのテーブルのステータスは、下書きとして設定されます。テーブルは、公開するまでは、HubLまたはAPIによるデータ出力を目的として使用することができません。

[テーブルを作成]ボタンをクリックして新しいHubDBテーブルを作成します。

テーブルの権限設定

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

  • [パブリックAPIアクセスを許可]:(既定ではオン) このオプションをオフに切り替えると、テーブルの内容はアプリまたは認証済みAPIでのみ表示できます。オンに切り替えると、認証されていないAPIからもデータを照会可能になります。
  • [行データを使用した動的ページ作成を有効化]:動的ページを使用すると、HubDBのテーブルの各行に対応するページを作成できます。このオプションをオンに切り替えると、メタディスクリプション、キービジュアル、およびcanonical URLのソースとして使用するHubDBテーブルの列を選択できます。
テーブルの設定エリアにアクセスする方法。

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

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

カスタム列

注:2020年10月1日以降、HubDBのリッチ テキスト エリア列は65,000文字に制限されます。詳細については、この変更に関する変更ログを参照してください。

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

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

セル

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

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

行の取得

テーブルをHubLから照会し、結果に対する反復処理を行うことができます。テーブルの行をリストを取得するには、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 %}

<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ではテキスト編集インターフェイスが提供されます。ただし、1つ大きな違いとして、HubDB UIではリッチ テキスト フィールドのソースコードを直接編集できません。これにより、技術者以外のユーザーによる無効なHTML入力を防止し、サイトの外観や機能に想定外の問題が発生することを防ぐことができます。埋め込みコードや追加のカスタムHTMLが必要な場合は、リッチ テキスト エディターの埋め込み機能を使用してカスタムコードを配置できます。 

HubDB REST APIの使用

外部で、またはサーバーレス関数を使用してHubDBデータを管理するには、こちらのREST APIを使用できます。


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