> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.jp/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# CMS API | HubDB

export const ScopesList = ({scopes = [], description = "この API には、次のいずれかのスコープが必要です。"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<RelatedApiLink />

<Accordion title="スコープ要件">
  <ScopesList
    scopes={[
  'hubdb'
]}
  />
</Accordion>

HubDBは、スプレッドシートと同じように、テーブル（表）の行、列、セルでデータを表現するリレーショナル データ ストアです。HubDBテーブルを[HubSpotアカウント内](/cms/start-building/features/storage/hubdb#create-a-hubdb-table)で追加したり変更したりできますが、ここに記載されているAPIエンドポイントを使用することもできます。ウェブサイトや[プログラマブルEメール](/cms/start-building/features/data-driven-content/emails-with-programmable-content)でHubDBテーブルのデータを使用する方法については、[HubSpotのCMS開発者向けドキュメント](/cms/start-building/features/storage/hubdb)を参照してください。

HubSpotウェブサイトページと同様に、HubDBテーブルは`draft`バージョンと`published`バージョンをサポートしています。これにより、公開中のページに影響を与えずに、テスト用または手動による承認プロセス用にテーブル内のデータを更新することができます。[下書きテーブルと公開テーブル](#draft-vs-live-tables)について詳細をご確認ください。

[公開アクセスを許可する](https://knowledge.hubspot.com/website-and-landing-pages/create-and-hubdb-tables#manage-table-settings-cms-hub-professional-and-enterprise-only)ようにテーブルが設定されている場合、クエリーパラメーター`portalId`を介してHubSpotアカウントIDを指定すると、認証なしでテーブルと行の公開バージョンにアクセスできます。

HubDB APIのv2から移行しようとしている場合は、[最新の（v3）APIの変更点](#changes-in-v3)について詳しくご確認ください。

<Warning>
  **注：**`GET`をサポートするエンドポイントは`CORS`もサポートしていますから、JavaScriptとアカウントIDを使用してクライアントサイドでテーブル内のデータにアクセスできます。その他の方法および「Get all tables」エンドポイントでは認証が必要であり、`CORS`はサポートされていません。
</Warning>

## レート制限

HubDBのAPIリクエストには、リクエストの種類に応じて異なるレート制限が適用されます。

* 認証を必要としない`GET`リクエスト（クライアントサイドのJavaScriptリクエストを含む）は、1秒あたり10件に限定されます。これらのリクエストは1日あたりの上限には計上されません。
* [認証を使用](https://developers.hubspot.jp/docs/guides/api/oauth/tokens)するその他全てのリクエストには、[標準的な制限](/api-reference/overview)が適用されます。

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

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`に送信します。

リクエスト本文で、次の必須フィールドを指定します。

| フィールド   | タイプ | 説明                                                                                               | 例                    |
| ------- | --- | ------------------------------------------------------------------------------------------------ | -------------------- |
| `name`  | 文字列 | テーブルの内部名。テーブルの作成後に、この「name」を変更することはできません。「name」には半角の英小文字、数字、アンダースコアのみ含めることができますが、数字で始めることはできません。 | `"name": "my_table"` |
| `label` | 文字列 | ユーザーがHubSpotでテーブルを編集するときに表示される、テーブルのラベル。                                                         | `"label":"My table"` |

さらに、次の任意のフィールドを指定できます。

| フィールド                   | タイプ    | 説明                                                                                                          | 例                                       |
| ----------------------- | ------ | ----------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `useForPages`           | ブール値   | テーブルを[動的ページの作成](#configuring-hubdb-tables-for-dynamic-pages)に使用可能にするかどうかを指定します。                             | `"useForPages": false`                  |
| `allowPublicAPIAccess`  | ブール値   | 承認なしでテーブルを読み取り可能にするかどうかを指定します。                                                                              | `"allowPublicApiAccess": false`         |
| `allowChildTables`      | ブール値   | テーブルの子テーブルを作成できるかどうかを指定します。                                                                                 | `"allowChildTables": false`             |
| `enableChildTablePages` | ブール値   | 子テーブルを使用して[マルチレベルの動的ページ](/cms/start-building/features/data-driven-content/hubdb/multilevel)を作成するかどうかを指定します。 | `"enableChildTablePages": false`        |
| `columns`               | オブジェクト | テーブルの列。列プロパティーの詳細については、「[テーブル列を追加する](#add-table-columns)」のセクションをご覧ください。                                     | `See "Add table columns" section below` |

列を追加せずにテーブルを作成するためのリクエストは、次のような内容になります。

```json theme={null}
// Example request
{
  "name": "test_table",
  "label": "Test Table",
  "useForPages": false,
  "allowPublicApiAccess": false,
  "allowChildTables": true,
  "enableChildTablePages": false,
  "columns": []
}
```

### テーブル列の追加

HubDBテーブルの各列は、次のプロパティーを使用して定義可能です。

| フィールド     | タイプ    | 説明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 例                                                                                          |
| --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `name`    | 文字列    | （必須）列の内部名。列の作成後にこれを変更することはできません。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | `"name": "row_name"`                                                                       |
| `label`   | 文字列    | 任意。ユーザーがHubSpotで列を編集するときに表示される、列のラベル。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | `"label": "Row label"`                                                                     |
| `type`    | 文字列    | 列のデータタイプ。次のいずれかにする必要があります。<ul><li>`TEXT`：テキストフィールド。</li><li>`RICHTEXT`：基本的なHTML書式設定をサポートするテキストフィールド。HTMLがHubSpotで編集可能になるかどうかを左右する可能性があるため、未加工のHTMLには推奨されません。HubSpotでコードを編集すると、コードがレンダリングされる方法にも影響が及ぶ可能性があります。</li><li>`NUMBER`：数値フィールド。</li><li>`BOOLEAN`：HubSpotでチェックボックスとして表示されます。チェックボックスをオフの状態で表示させるには`0`を、オンの状態で表示させるには`1`を使用します。</li><li>`DATE`：特定の日付を、UTC深夜0時に設定されたミリ秒単位のタイムスタンプとして格納します。</li><li>`DATETIME`：日付と時刻をミリ秒単位のタイムスタンプとして格納します。</li><li>`SELECT`：この列を、いくつかのオプションのうち1つにのみ設定できます。必須プロパティーについては、下記の`options`フィールドを参照してください。</li><li>`MULTISELECT`：この列を、いくつかのオプションのうち1つ以上に設定できます。必須プロパティーについては、下記の`options`フィールドを参照してください。</li><li>`LOCATION`：場所の緯度と経度を格納します。</li><li>`IMAGE`：画像のURLを格納します。</li><li>`VIDEO`：動画のプレーヤーIDを格納します。</li><li>`FOREIGN_ID`：この列は、別のHubDBテーブルに含まれる列を参照します。さらに、次のプロパティーを使用して、該当する別のHubDBテーブルを定義する必要もあります。<ul><li>foreignTableId：別のHubDBテーブルのID。</li><li>foreignColumnId：別のHubDBテーブル内の列のID。</li></ul></li><li>`CURRENCY`：数値を通貨の値として格納します。</li><li>`FILE`：ファイルマネージャーからファイルを格納します。さらに、`fileType`フィールドを含めることで、全てのファイルタイプをフィールドに格納できるか（`FILE`）、PDFなどの特定のドキュメントタイプのみ格納できるか（`DOCUMENT`）を指定する必要もあります。</li></ul> | `"type": "type"`                                                                           |
| `options` | オブジェクト | selectタイプとmultiselectタイプの列で使用できるオプションのリスト。各オプションは、`name`に加え、`option`に設定された`type`を使用して定義されます。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | `"option": [{"name":"Option 1", "type":"option"}, {"name": "Option 2", "type": "option"}]` |

上記のフィールドを使用して新しいHubDBテーブルを作成するためのリクエストは、次のような内容になります。

```json theme={null}
// Example request
{
  "label": "Test Table",
  "name": "test_table",
  "columns": [
    {
      "name": "text_column",
      "label": "Text Column",
      "archived": false,
      "type": "TEXT"
    },
    {
      "name": "number_column",
      "label": "Number Column",
      "archived": false,
      "type": "NUMBER"
    },
    {
      "name": "multiselect",
      "label": "Multi Select Column",
      "archived": false,
      "type": "multiselect",
      "options": [
        {
          "name": "Option 1",
          "type": "option"
        },
        {
          "name": "Option 2",
          "type": "option"
        }
      ]
    }
  ],
  "useForPages": true,
  "allowChildTables": true,
  "enableChildTablePages": false,
  "allowPublicApiAccess": false
}
```

テーブルの作成後、列には昇順のIDが割り当てられます。既存の列を更新する際には、入力オブジェクトに列の`id`フィールドを含めます。

### テーブル行の追加

行を追加するには、APIを使用して手動で行う方法と、[CSVファイルから行をインポート](#import-rows-from-csv)する方法があります。

HubDBテーブルに行を追加するには、`POST`リクエストを`/cms/v3/hubdb/tables/{tableIdOrName}/rows`に送信します。

各テーブル行には、次のフィールドを含めることができます。

| フィールド          | タイプ    | 説明                                                                                                                                | 例                                                                |
| -------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| `values`       | オブジェクト | 列名とその列に追加する値を指定する、キーと値のペアからなるリスト。<br /><br />いずれかの列に特定の値を設定する必要がない場合は、キー／値ペアのリストでその列名を省略できます。                                     | `"values": { "text_column": "sample text", "number_column": 76}` |
| `path`         | 文字列    | [動的ページに対して有効になっている](/cms/start-building/features/data-driven-content/hubdb/overview)テーブルの場合、`path`は、この行で作成されるページに使用されるパスサフィックスです。 | `"path": "example_url_path"`                                     |
| `name`         | 文字列    | [動的ページに対して有効になっている](/cms/start-building/features/data-driven-content/hubdb/overview)テーブルの場合、`name`は、この行で作成されるページに使用されるHTMLタイトルです。 | `"name": "Example Title"`                                        |
| `childTableId` | 数値     | [マルチレベルの動的ページ](/cms/start-building/features/data-driven-content/hubdb/multilevel)を作成する場合、`childTableId`は子テーブルのIDを指定します。           | `"childTableId": 123456`                                         |

上記のフィールドを使用したリクエストの例を以下に示します。

```json theme={null}
// Example request
{
  "values": {
    "text_column": "sample text value",
    "number_column": 76,
    "rich_text_column": "<strong>This is a styled paragraph.</strong>",
    "date_column": 1591228800000,
    "date_time_column": 1604450520000,
    "boolean_column": 1,
    "select_column": {
      "name": "option 1",
      "type": "option"
    },
    "multiselect_column": [
      {
        "name": "Option 1",
        "type": "option"
      },
      {
        "name": "Option 2",
        "type": "option"
      }
    ],
    "url_column": "https://www.hubspot.com/marketing",
    "video_column": 3392210008,
    "image_column": {
      "url": "https://f.hubspotusercontentqa00.net/hubfs/99992002/image3%20(1).jpg",
      "width": 1600,
      "height": 900,
      "type": "image"
    },
    "foreign_id_column": [
      {
        "id": "4364402239",
        "type": "foreignid"
      },
      {
        "id": "4364402240",
        "type": "foreignid"
      }
    ]
  },
  "path": "test_path",
  "name": "test_title",
  "childTableId": "1902373"
}
```

### CSVからの行のインポート

CSVファイルからHubDBテーブルにデータをインポートするには、`POST`リクエストを`/cms/v3/hubdb/tables/{tableIdOrName}/draft/import`に送信します。

インポートエンドポイントは、次のような`multipart/form-data` `POST`リクエストを受け入れます。

* `config`\*\*：\*\*インポートで使用されるJSON形式のオプションのセット。
* `file`\*\*：\*\*インポートするCSVファイル。

`config`には、次のフィールドをJSON文字列として含めます。

| フィールド                    | タイプ  | 説明                                                                                                                                                                                                                                                                                                                                                                        | 例                                                                                       |
| ------------------------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `skipRows`               | 数値   | スキップするヘッダー行の数。このフィールドの値は既定で`1`に設定されます。この場合、最初の行はヘッダーとして扱われてスキップされます。全ての行が有効なデータである場合は、このフィールドの値を`0`に設定してください。                                                                                                                                                                                                                                                             | `"skipRows": 0`                                                                         |
| `separator`              | 文字列  | CSVファイル内の列区切り文字。既定では`","`（半角カンマ）に設定されます。                                                                                                                                                                                                                                                                                                                                  | `"separator": ","`                                                                      |
| `idSourceColumn`         | 数値   | 行のID（`hs_id`）が入っているソースファイル内の列のインデックス。この列が指定されている場合、インポートされるCSVファイル内のIDが一致する行によって、テーブル内の既存の行が更新されます。これは任意のフィールドであり、初めてデータをテーブルにインポートするときには無視できます。詳細については、下記の「[リセットオプション](#reset-options)」セクションを参照してください。                                                                                                                                                                   | `"idSourceColumn": 1`                                                                   |
| `resetTable`             | ブール値 | 既定では`false`に設定されます。この場合、既存の行を1つも除去することなく、テーブルの行が更新されます。`true`に設定すると、スプレッドシートの行によってテーブルのデータが上書きされます。つまり、スプレッドシート内に含まれない行はテーブルから削除されます。詳細については、下記の「[リセットオプション](#reset-options)」セクションを参照してください。                                                                                                                                                                              | `"resetTable": true`                                                                    |
| `nameSourceColumn`       | 数値   | [動的ページに対して有効になっている](/cms/start-building/features/data-driven-content/hubdb/overview)テーブルの場合、`nameSourceColumn`は、行の`name`が格納されているCSVファイル内の列を指定します。列番号は昇順で、最初の列は`1`です。                                                                                                                                                                                                      | `"nameSourcecolumn": 5`                                                                 |
| `pathSourceColumn`       | 数値   | [動的ページに対して有効になっている](/cms/start-building/features/data-driven-content/hubdb/overview)テーブルの場合、`pathSourceColumn`は、行の`path`が格納されているCSVファイル内の列を指定します。列番号は昇順で、最初の列は`1`です。                                                                                                                                                                                                      | `"pathSourcecolumn": 6`                                                                 |
| `childTableSourceColumn` | 数値   | CSVファイル内の、行の`childTableId`が入っている列を指定します。列番号は昇順で、最初の列は`1`です。                                                                                                                                                                                                                                                                                                               | `"childTableSourcecolumn": 3`                                                           |
| `columnMappings`         | 配列   | ソースファイル内の列とインポート先HubDBテーブル内の列の間のマッピングリスト。各マッピングは次の形式でなければなりません：`{"source":1,"target”:"columnIdOrName"}` <ul><li>\*\*source：\*\*ソースファイル内の列インデックス。例えば`2`は2番目の列です。</li><li>\*\*target：\*\*HubDBテーブル列のIDまたは名前。[テーブルの詳細情報を取得する](#retrieve-hubdb-data)ことで、列のIDや名前を確認できます。</li></ul>ファイルに`hs_id`列がある場合は、それを`columnMappings`に含めないでください。代わりに、この列を`idSourceColumn`として含めて既存の行を更新します。 | `"columnMappings": [{"source":1, "target": 2}, {"source": 2, "target": "column_name"}]` |
| `primaryKeyColumn`       | 文字列  | 重複排除に使用される、ターゲットHubDBテーブル内の列の名前。このフィールドで列のIDを使用することはできません。                                                                                                                                                                                                                                                                                                                | `"primaryKeyColumn": "column_name"`                                                     |
| `encoding`               | 文字列  | ファイルのエンコーディングの種類。例：`utf-8`、`ascii`、`iso-8859-2`、`iso-8859-5`、`iso-2022-jp`、`windows-1252`。                                                                                                                                                                                                                                                                                | `"encoding": "utf-8"`                                                                   |
| `format`                 | 文字列  | CSVのみがサポートされています。                                                                                                                                                                                                                                                                                                                                                         | `"format": "csv"`                                                                       |

上記の表を使用した`config` JSONの例を以下に示します。

```json theme={null}
// Example config JSON
{
  "skipRows": 1,
  "separator": ",",
  "idSourceColumn": 1,
  "resetTable": false,
  "columnMappings": [
    {
      "target": 1,
      "source": 2
    },
    {
      "target": 2,
      "source": "zip_code"
    }
  ],
  "primaryKeyColumn": "name",
  "encoding": "utf-8",
  "format": "csv"
}
```

cURLを使用する場合、コマンドは次のようになります。

```shell theme={null}
curl -L -X POST 'https://api.hubspotqa.com/hubdb/api/v2/tables/xxxxxx/import?portalId=xxxxxxx' \
-H 'Content-Type: multipart/form-data' \
-F 'config="{\"skipRows\":1,\"format\":\"csv\",\"separator\":\",\",\"encoding\":\"iso-8859-1\",\"columnMappings\":[{\"target\":1,\"source\":7},{\"target\":3,\"source\":8}],\"idSourceColumn\":1,\"pathSourceColumn\":null,\"nameSourceColumn\":null,\"childTableSourceColumn\":null,\"resetTable\":true}"' \
-F 'file=@"/Users/xxxxxxxxxxxxx/Downloads/filename.csv"'
```

### 日付の書式設定

データを日付型の列にインポートする際は、さまざまな日付形式を使用できます。

**整数**

* `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の行データを上書きするかどうかを管理できます。

* `resetTable`が`true`に設定されている場合：

  * CSVファイル内の行に行ID列（`hs_id`）がない場合、または行IDが`0`と指定されている場合、それらの行は、生成された新しい行IDを使って挿入されます。
  * CSVファイル内の行IDがターゲットテーブルに既に存在する場合、テーブルの既存の行は入力ファイル内の新しい値で更新されます。
  * テーブルに行が存在するものの、入力CSVファイルにその行に対応する行IDがない場合、その行はターゲットテーブルから削除されます。
  * 入力CSVファイル内の行IDがターゲットテーブル内に存在しない場合は、生成された新しい行IDを使ってそれらの行が挿入され、入力ファイル内で指定されている行IDは無視されます。
  * 入力CSVファイル内に行IDの列が1つも含まれていない場合、ターゲットテーブルから全ての行が削除され、入力ファイル内の行が、生成された新しい行IDを使って挿入されます。

* `resetTable`が`false`（既定）に設定されている場合：

  * 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}`に送信します。

行データを取得する際に、フィルターを適用して結果を絞り込んだり、並べ替えたりできます。

[公開アクセスを許可する](https://knowledge.hubspot.com/website-and-landing-pages/create-and-hubdb-tables#manage-table-settings-cms-hub-professional-and-enterprise-only)ようにテーブルが設定されている場合、クエリーパラメーター`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`タイプです。

以下に、各タイプの列に適用できる演算子について説明します。

| 演算子            | 名前          | 説明                                                                                                                   |
| -------------- | ----------- | -------------------------------------------------------------------------------------------------------------------- |
| `eq (or none)` | 等しい         | 全ての列タイプ。演算子が使用されていない場合、このフィルターが適用されます。multiselectの列でこれを使用すると、指定された値に完全に一致する行が返されます。                                  |
| `ne`           | 等しくない       | 全ての列タイプ。                                                                                                             |
| `contains`     | 次の全ての値を含む   | テキスト、リッチテキスト、およびmultiselect。multiselectの列でこれを使用すると、指定された全ての値を含む行が返されます。このフィルターでは<u>大文字と小文字が区別されます</u>。               |
| `lt`           | 次の値より小さい    | 数値、日付、日時。                                                                                                            |
| `lte`          | 次の値以下       | 数値、日付、日時。                                                                                                            |
| `gt`           | 次の値より大きい    | 数値、日付、日時。                                                                                                            |
| `gte`          | 次の値以上       | 数値、日付、日時。                                                                                                            |
| `is_null`      | Null        | ブールを除く全てのタイプの列。このフィルターでは値は不要です（例：`&exampleColumn__is_null=`）。                                                        |
| `not_null`     | Nullではない    | ブールを除く全てのタイプの列。このフィルターでは値は不要です（例：`&exampleColumn__not_null=`）。                                                       |
| `like`         | いいね！        | テキストとリッチテキスト。                                                                                                        |
| `not_like`     | いいね！ではない    | テキストとリッチテキスト。                                                                                                        |
| `icontains`    | 次の文字列を含む    | テキストとリッチテキスト。このフィルターでは<u>大文字と小文字が区別されません</u>。                                                                        |
| `startswith`   | 次の文字列で始まる   | テキストとリッチテキスト。                                                                                                        |
| `in`           | 次の値のいずれかを含む | 数値、select、multiselect。渡されたオプションのうち少なくとも1つが列に入っている行が返されます。クエリーパラメーターの中に他の`sort`がない場合、返される結果は、`in`演算子での値の指定順に並べ替えられます。 |

### 返された行の並べ替え

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テーブルをデータソースとして使用して[動的ページを生成する](/cms/start-building/features/data-driven-content/hubdb/overview)ことができます。例えば、経営陣のメンバーごとに1行ずつ含むテーブルを作成し、ページに表示させたい情報が入った列をそれに含めることができます。ページの動的データソースとしてそのテーブルを選択すると、サマリー項目として全行を表示するリストページがそのページによって生成され、さらに行ごとに個別のページも生成されて、ブログ リスト ページとブログ記事ページに似た状態になります。

コンテンツエディターでテーブルをデータソースとして選択できるようにするには、`useForPage`を`true`に設定する必要があります。必要に応じて`dynamicMetaTags`を含めると、各ページのメタデータにどの列を使用するかを指定できます。

<Warning>
  **注：**`dynamicMetaTags`を指定するときには、`content`ではなく`page_meta` HubLタグをページで必ず使用する必要があります。詳しくは、[動的ページガイド](/cms/start-building/features/data-driven-content/hubdb/overview)をご覧ください。
</Warning>

例えば次のコードでは動的ページ用のテーブルを作成して、ページのメタデータに使われる3つの列を指定します。

```json theme={null}
// Example POST request to create table
{
  "name": "dynamic_page_table",
  "label": "Dynamic page table",
  "useForPages": true,
  "columns": [
    {
      "name": "meta_description",
      "label": "Meta description",
      "archived": false,
      "type": "TEXT"
    },
    {
      "name": "featured_image",
      "label": "Featured image",
      "archived": false,
      "type": "IMAGE"
    },
    {
      "name": "canonical_url",
      "label": "Canonical URL",
      "archived": false,
      "type": "URL"
    }
  ],
  "dynamicMetaTags": {
    "DESCRIPTION": 1,
    "FEATURED_IMAGE_URL": 2,
    "LINK_REL_CANONICAL_URL": 3
  }
}
```

| パラメーター                   | タイプ    | 説明                                                                                                                                                                                     |
| ------------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `useForPages`            | ブール値   | テーブルを動的ページのデータソースとして使用できるようにするには、これを`true`に設定します。                                                                                                                                      |
| `dynamicMetaTags`        | オブジェクト | 各動的ページのメタデータに使用する列をIDによって指定します。以下を含めることができます：<ul><li>`DESCRIPTION`</li><li>`FEATURED_IMAGE_URL`</li><li>`LINK_REL_CANONICAL_URL`</li></ul>メタデータフィールドが指定されない場合、ページでは親ページからそれぞれの値を継承します。 |
| `DESCRIPTION`            | 数値     | 各ページのメタディスクリプションに使用する列の数値ID。                                                                                                                                                           |
| `FEATURED_IMAGE_URL`     | 数値     | 各ページのキービジュアルURLに使用する列の数値ID。                                                                                                                                                            |
| `LINK_REL_CANONICAL_URL` | 数値     | 各ページのcanonical URLに使用する列の数値ID。                                                                                                                                                         |

## v3での変更点

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