> ## 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.

# CRM API | インポート

export const postmanIcon = <svg xmlns="http://www.w3.org/2000/svg" width={25} height={25} preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
    <path fill="#FF6C37" d="M254.953 144.253c8.959-70.131-40.569-134.248-110.572-143.206C74.378-7.912 10.005 41.616 1.047 111.619c-8.959 70.003 40.569 134.248 110.572 143.334 70.131 8.959 134.248-40.569 143.334-110.7Z" />
    <path fill="#FFF" d="m174.2 82.184-54.007 54.007-15.229-15.23c53.11-53.11 58.358-48.503 69.236-38.777Z" />
    <path fill="#FF6C37" d="M120.193 137.47c-.384 0-.64-.128-.895-.384l-15.358-15.229a1.237 1.237 0 0 1 0-1.792c54.007-54.006 59.638-48.887 71.028-38.649.255.256.383.512.383.896s-.128.64-.383.896l-54.007 53.878c-.128.256-.512.384-.768.384Zm-13.437-16.509 13.437 13.438 52.087-52.087c-9.47-8.446-15.87-11.006-65.524 38.65Z" />
    <path fill="#FFF" d="m135.679 151.676-14.718-14.718 54.007-54.006c14.46 14.59-7.167 38.265-39.29 68.724Z" />
    <path fill="#FF6C37" d="M135.679 152.956c-.384 0-.64-.128-.896-.384l-14.718-14.718c-.256-.256-.256-.512-.256-.896s.128-.64.384-.895L174.2 82.056a1.237 1.237 0 0 1 1.791 0 15.58 15.58 0 0 1 4.991 11.902c-.256 14.206-16.38 32.25-44.28 58.614-.383.256-.767.384-1.023.384Zm-12.926-15.998c8.19 8.319 11.646 11.646 12.926 12.926 21.5-20.476 42.36-41.464 42.488-55.926.128-3.327-1.152-6.655-3.327-9.214l-52.087 52.214Z" />
    <path fill="#FFF" d="m105.22 121.345 10.878 10.878c.256.256.256.512 0 .768-.128.128-.128.128-.256.128l-22.524 4.863c-1.152.128-2.175-.64-2.431-1.791-.128-.64.128-1.28.512-1.664l13.053-13.054c.256-.256.64-.384.768-.128Z" />
    <path fill="#FF6C37" d="M92.934 139.262c-1.92 0-3.327-1.536-3.327-3.455 0-.896.384-1.792 1.024-2.432l13.053-13.054c.768-.64 1.792-.64 2.56 0l10.878 10.878c.768.64.768 1.792 0 2.56-.256.256-.512.384-.896.512l-22.524 4.863c-.256 0-.512.128-.768.128Zm11.902-16.51-12.542 12.543c-.256.256-.383.64-.128 1.024.128.383.512.511.896.383l21.116-4.607-9.342-9.342Z" />
    <path fill="#FFF" d="M202.739 52.238c-8.191-7.935-21.373-7.679-29.307.64-7.935 8.318-7.679 21.372.64 29.306A20.678 20.678 0 0 0 199.155 85l-14.59-14.59 18.174-18.172Z" />
    <path fill="#FF6C37" d="M188.405 89.223c-12.158 0-22.012-9.854-22.012-22.012 0-12.158 9.854-22.012 22.012-22.012 5.631 0 11.134 2.176 15.23 6.143.255.256.383.512.383.896s-.128.64-.384.895L186.357 70.41l13.566 13.566c.512.512.512 1.28 0 1.792l-.256.256c-3.327 2.047-7.295 3.199-11.262 3.199Zm0-41.337c-10.75 0-19.452 8.703-19.324 19.453 0 10.75 8.702 19.452 19.452 19.324 2.944 0 5.887-.64 8.575-2.047l-13.438-13.31c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l17.149-17.15c-3.456-2.943-7.807-4.479-12.414-4.479Z" />
    <path fill="#FFF" d="m203.122 52.622-.255-.256-18.301 18.044 14.461 14.462c1.408-.896 2.816-1.92 3.967-3.072a20.51 20.51 0 0 0 .128-29.178Z" />
    <path fill="#FF6C37" d="M199.155 86.28c-.384 0-.64-.128-.896-.384l-14.589-14.59c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l18.173-18.173a1.237 1.237 0 0 1 1.791 0l.384.256c8.575 8.574 8.575 22.396.128 31.098-1.28 1.28-2.687 2.432-4.223 3.328-.384.128-.64.256-.768.256Zm-12.798-15.87 12.926 12.926c1.024-.64 2.048-1.536 2.816-2.304 7.294-7.294 7.678-19.196.64-26.875L186.357 70.41Z" />
    <path fill="#FFF" d="M176.375 84.488a7.879 7.879 0 0 0-11.134 0l-48.247 48.247 8.063 8.063 51.062-44.792c3.328-2.816 3.584-7.807.768-11.134-.256-.128-.384-.256-.512-.384Z" />
    <path fill="#FF6C37" d="M124.929 142.077c-.384 0-.64-.128-.896-.383l-8.063-8.063a1.237 1.237 0 0 1 0-1.792l48.247-48.247a9.115 9.115 0 0 1 12.926 0 9.115 9.115 0 0 1 0 12.926l-.384.384-51.063 44.792c-.128.255-.384.383-.767.383Zm-6.143-9.342 6.27 6.271 50.167-44.024c2.816-2.304 3.072-6.527.768-9.342-2.303-2.816-6.526-3.072-9.342-.768-.128.128-.256.256-.512.384l-47.351 47.48Z" />
    <path fill="#FFF" d="M80.009 187.637c-.512.256-.768.768-.64 1.28l2.175 9.214c.512 1.28-.256 2.816-1.663 3.2-1.024.384-2.176 0-2.816-.768l-14.077-13.95 45.943-45.943 15.87.256 10.75 10.75c-2.56 2.175-18.045 17.149-55.542 35.961Z" />
    <path fill="#FF6C37" d="M78.985 202.61c-1.024 0-2.048-.383-2.688-1.151l-13.95-13.95c-.255-.256-.383-.512-.383-.896 0-.383.128-.64.384-.895l45.944-45.944c.256-.256.64-.384.895-.384l15.87.256c.383 0 .64.128.895.384l10.75 10.75c.256.256.384.64.384 1.024s-.128.64-.512.896l-.895.767c-13.566 11.902-31.995 23.804-54.902 35.194l2.175 9.086c.384 1.664-.384 3.456-1.92 4.352-.767.384-1.407.512-2.047.512Zm-14.078-15.997 13.182 13.054c.384.64 1.152.896 1.792.512.64-.384.896-1.152.512-1.792l-2.176-9.214c-.256-1.152.256-2.176 1.28-2.688 22.652-11.39 40.952-23.163 54.39-34.81l-9.47-9.47-14.718-.256-44.792 44.664Z" />
    <path fill="#FFF" d="m52.11 197.62 11.006-11.007 16.38 16.381-26.107-1.791c-1.151-.128-1.92-1.152-1.791-2.304 0-.512.128-1.024.512-1.28Z" />
    <path fill="#FF6C37" d="m79.497 204.146-26.236-1.791c-1.92-.128-3.199-1.792-3.071-3.712.128-.768.384-1.535 1.024-2.047L62.22 185.59a1.237 1.237 0 0 1 1.792 0l16.38 16.38c.385.385.512.897.257 1.408-.256.512-.64.768-1.152.768Zm-16.381-15.74-10.11 10.11c-.384.255-.384.895 0 1.151.127.128.255.256.511.256l22.652 1.536-13.053-13.054ZM104.452 146.557c-.768 0-1.28-.64-1.28-1.28 0-.384.128-.64.384-.896l12.414-12.414a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-20.477 4.352h-.256Zm12.414-11.902-8.446 8.446 13.821-2.943-5.375-5.503Z" />
    <path fill="#FFF" d="m124.8 140.926-14.077 3.071c-1.024.256-2.048-.384-2.303-1.408-.128-.64 0-1.28.511-1.791l7.807-7.807 8.063 7.935Z" />
    <path fill="#FF6C37" d="M110.467 145.277a3.168 3.168 0 0 1-3.2-3.2c0-.895.385-1.663.897-2.303l7.806-7.807a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-14.078 3.072h-.64Zm6.399-10.622-6.91 6.91c-.257.257-.257.512-.129.768s.384.384.768.384l11.774-2.56-5.503-5.502ZM203.25 64.907c-.256-.767-1.151-1.151-1.92-.895-.767.255-1.151 1.151-.895 1.92 0 .127.128.255.128.383.768 1.536.512 3.455-.512 4.863-.512.64-.384 1.536.128 2.048.64.512 1.536.384 2.048-.256 1.92-2.432 2.303-5.503 1.023-8.063Z" />
  </svg>;

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>;
};

<Card title="Run in Postman" href="https://app.getpostman.com/run-collection/f30b00bcfdc29170b2e8" icon={postmanIcon} horizontal={true} />

<DndSection>
  <DndModule numCols={10}>
    <div>
      <Accordion title="スコープ要件">
        <ScopesList
          scopes={[
  'crm.import'
]}
        />
      </Accordion>

      # インポート

      <RelatedApiLink />
    </div>
  </DndModule>

  <DndModule numCols={2} />
</DndSection>

インポートAPIは、コンタクト、会社、コメントなどのCRMレコードとアクティビティーをHubSpotアカウントにインポートする際に使用します。インポートが完了した後は、レコードとアクティビティーへのアクセスおよび更新は、[コンタクトAPI、](/guides/crm/understanding-the-crm)[関連付け](/api-reference/crm-associations-v4/guide)API、[エンゲージメントAPI](/api-reference/overview)などの各種CRM APIエンドポイントを通じて行えます。また、[HubSpotのガイド付きインポートツールを使用してレコードとアクティビティーをインポートする](https://knowledge.hubspot.com/ja/import-and-export/import-objects)こともできます。

インポートを開始する前に、次のナレッジベース記事をご確認ください。

* [ファイル要件](https://knowledge.hubspot.com/ja/import-and-export/set-up-your-import-file#file-requirements-and-technical-limits)
* [レコードとアクティビティーのインポートに必要なプロパティー](https://knowledge.hubspot.com/ja/import-and-export/set-up-your-import-file#required-properties)
* [マーケティングイベント参加者のインポートに必要なプロパティー](https://knowledge.hubspot.com/ja/integrations/import-marketing-event-participants#prepare-your-import-file)

<Warning>
  ### 注：

  カスタムイベントを作成する、またはイベントをレコードに関連付けるには、インポートではなく[カスタムイベントAPI](https://developers.hubspot.jp/docs/api-reference/events-send-event-completions-v3/guide)をご使用ください。
</Warning>

## インポートを開始する

インポートを開始するには、`POST`リクエストを`/crm/v3/imports`に送信します。その際、インポートファイルの列をHubSpot上の関連するプロパティーに割り当てる方法をリクエスト本文で指定します。

APIインポートはform-dataタイプのリクエストとして送信され、リクエスト本文には次のフィールドが含まれます。

* [importRequest](#format-the-importrequest-data)：リクエストのJSONを格納するテキストフィールド。
* [files](#map-file-columns-to-hubspot-properties)：インポートファイルを格納するファイルフィールド。

リクエストヘッダーには、`multipart/form-data`の値が含まれる`Content-Type`ヘッダーを追加します。

以下のスクリーンショットは、Postmanなどのアプリを使用したリクエストの例です

<Frame>
  <img src="https://www.hubspot.jp/hubfs/Knowledge_Base_2021/Developer/postman-import-request-no-response0.png" alt="応答がないpostmanインポートリクエスト" />
</Frame>

### importRequestデータを書式設定する

リクエストでは、インポートファイルの詳細（スプレッドシートの列のHubSpotデータに対するマッピングなど）を定義します。また、次のフィールドを含める必要があります。

* **name**：インポートの名前。これはHubSpot上で、リストなどの他のツールで参照できる名前で、[インポートツールにも表示される](https://knowledge.hubspot.com/ja/import-and-export/view-and-analyze-previous-imports)名前です。
* **importOperations**：この任意指定のフィールドを使用して、インポートで特定のオブジェクトやアクティビティーの[レコードの作成と更新、作成<u>のみ</u>、または更新<u>のみ</u>](https://knowledge.hubspot.com/ja/import-and-export/import-objects#choose-how-to-import)のいずれを行うかを指示します。オブジェクト／アクティビティーの`objectTypeId`を指定し、レコードの`UPSERT`（作成と更新）、`CREATE`、または`UPDATE`を行いたいかどうかを指定します。例えばリクエストのフィールドは次のようになります：`"importOperations": {"0-1": "CREATE"}`このフィールドを含めない場合、インポートに使用されるデフォルト値は`UPSERT`です。
* **dateFormat**：ファイルに含まれる日付の形式。これは既定では`MONTH_DAY_YEAR`に設定されていますが、`DAY_MONTH_YEAR`または`YEAR_MONTH_DAY`も使用できます。
* **marketableContactImport**：インポートファイルに含まれるコンタクトの[マーケティングステータス](https://knowledge.hubspot.com/ja/records/marketing-contacts)を示す任意指定のフィールド。これは、[マーケティングコンタクトの利用](https://knowledge.hubspot.com/ja/records/marketing-contacts#check-your-access-to-marketing-contacts)が可能なアカウントにコンタクトをインポートする場合にのみ使用します。ファイル内のコンタクトをマーケティング対象として設定するには、`true`の値を使用します。ファイル内のコンタクトをマーケティング対象外として設定するには、`false`の値を使用します。
* **createContactListFromImport**：インポートから[コンタクトの静的リストを作成](https://knowledge.hubspot.com/ja/import-and-export/import-objects#create-list-from-import)するための任意指定のフィールド。ファイルからリストを作成するには、`true`の値を使用します。
* **files**：インポートファイルの情報を格納する配列。
  * **fileName**：インポートファイルの名前。
  * **fileFormat**：インポートファイルの形式。CSVファイルの場合に使用する値は`CSV`です。Excelファイルの場合に使用する値は`SPREADSHEET`です。
  * **fileImportPage**：インポートファイルのデータをHubSpotデータにマッピングするために必要な`columnMappings`配列が含まれます。列のマッピングの詳細については、以下で説明しています。

### HubSpotプロパティーにファイルの列をマッピングする

`columnMappings`配列内には、スプレッドシートの列ヘッダーの順序に合わせて、インポートファイルの各列に対応するエントリーを含めます。

各列には、次のフィールドを格納します。

* **columnObjectTypeId**: データが属するオブジェクトまたはアクティビティーの名前または`objectTypeId`値。`objectTypeId`値の一覧については、[こちらの記事](/guides/crm/understanding-the-crm#object-type-id)をご覧ください。
* **columnName**: 列ヘッダーの名前。これは、ファイルの列ヘッダーの名前に完全一致する必要があります。
* **propertyName**: データのマッピング先となるHubSpotプロパティーの内部名。`toColumnObjectTypeId`フィールドが使用されている場合、[複数ファイルのインポート](#import-multiple-files)で共通する列では、`propertyName`が`null`である必要があります。
* **columnType**：これを使用して、列に[固有IDプロパティー](https://knowledge.hubspot.com/ja/import-and-export/understand-the-import-tool#unique-identifiers)が含まれることを指定します。インポートのプロパティーと目標に応じて、次のいずれかの値を使用します。
  * **HUBSPOT\_OBJECT\_ID**: レコードのID。例えば、コンタクトのインポートファイルに、コンタクトに関連付けられる会社のIDを格納する「レコードID」列を含めるケースが考えられます。\_ \_
  * **HUBSPOT\_ALTERNATE\_ID**: レコードID以外の固有ID。例えば、コンタクトのインポートファイルに、コンタクトのEメールアドレスを格納した「Eメール」列を含めるケースが考えられます。\_ \_
  * **FLEXIBLE\_ASSOCIATION\_LABEL**：関連付けラベルが列に含まれることを示すには、この列タイプを含めます。
  * **ASSOCIATION\_KEYS**：同じオブジェクト関連付けインポートの場合にのみ、関連付けられる同じオブジェクトレコードの固有IDにこの列タイプを含めます。例えば、連絡先の関連付けをインポートするリクエストでは、「Associated contact \[email/Record ID]」列の`columnType`を`ASSOCIATION_KEYS`にする必要があります。\_ \_詳しくは、[同じオブジェクト関連付けインポート用にインポートファイルを設定する](https://knowledge.hubspot.com/ja/import-and-export/set-up-your-import-file#same-object-association-imports)方法についてご確認ください。
* **toColumnObjectTypeId**：[複数のファイル](#import-multiple-files)または複数のオブジェクトをインポートする場合の、[共通する列](https://knowledge.hubspot.com/ja/import-and-export/set-up-your-import-file#import-associations-in-two-files)プロパティーまたは関連付けラベルが属するオブジェクトの名前または`objectTypeId`。プロパティーが属して<u>いない</u>オブジェクトのファイルに共通する列プロパティー用にこのフィールドを含めます。例えば、共通する列として［Eメール］コンタクトプロパティーを持つ2つのファイルのコンタクトと会社を関連付ける場合、<u>会社</u>ファイルの「Eメール」列用に`toColumnObjectTypeId`を含めます。\_ \_\_ \_
* **foreignKeyType**：`associationTypeId`と`associationCategory`で指定された、共通の列が使用する関連付けのタイプ（[複数ファイルのインポート](#import-multiple-files)の場合のみ）。プロパティーが属して<u>いない</u>オブジェクトのファイルに共通する列プロパティー用にこのフィールドを含めます。例えば、共通する列として［Eメール］コンタクトプロパティーを持つ2つのファイルのコンタクトと会社を関連付ける場合、<u>会社</u>ファイルの「Eメール」列用に`foreignKeyType`を含めます。\_ \_\_ \_
* **associationIdentifierColumn**：レコードを関連付けるために共通の列で使用されるプロパティーを示します（[複数ファイルのインポート](#import-multiple-files)の場合のみ）。プロパティーが属しているオブジェクトのファイルに共通する列プロパティー用にこのフィールドを含めます。例えば、共通する列として［Eメール］コンタクトプロパティーを持つ2つのファイルのコンタクトと会社を関連付ける場合、<u>会社</u>ファイルの「Eメール」列について`associationIdentifierColumn`を`true`に設定します。\_ \_\_ \_

## 1つのオブジェクトを含む1つのファイルをインポートする

以下は、1つのファイルをインポートしてコンタクトを作成するためのリクエスト本文の例です。

<CodeGroup>
  ```json example.json theme={null}
  // Example POST to https://api.hubspot.com/crm/v3/imports
  // Content-Type header set to multipart/form-data

  {
  "name": "November Marketing Event Leads",
  "importOperations": {
  "0-1": "CREATE"
  },
  "dateFormat": "DAY_MONTH_YEAR",
  "files": [
  {
  "fileName": "Nov-event-leads.csv",
  "fileFormat": "CSV",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "columnObjectTypeId": "0-1",
  "columnName": "First Name",
  "propertyName": "firstname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Last Name",
  "propertyName": "lastname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Email",
  "propertyName": "email",
  "columnType": "HUBSPOT_ALTERNATE_ID"
  }
  ]
  }
  }
  ]
  }
  ```

  ```python example.py theme={null}
  # This example a local file named 'test_import.csv'
  # This file contains a list of contact records to import.

  import requests
  import json
  import os

  url = "https://api.hubapi.com/crm/v3/imports"

  YOUR_ACCESS_TOKEN = 'xxxxxxx';

  # Content-Type header will be set automatically by the requests library
  headers = {
  'authorization': 'Bearer %s' % YOUR_ACCESS_TOKEN
  }

  data = {
  "name": "November Marketing Event Leads",
  "importOperations": {
  "0-1": "CREATE"
  },
  "dateFormat": "DAY_MONTH_YEAR",
  "files": [
  {
  "fileName": "Nov-event-leads.csv",
  "fileFormat": "CSV",
  "fileImportPage": {
  "hasHeader": True,
  "columnMappings": [
  {
  "columnObjectTypeId": "0-1",
  "columnName": "First Name",
  "propertyName": "firstname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Last Name",
  "propertyName": "lastname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Email",
  "propertyName": "email",
  "columnType": "HUBSPOT_ALTERNATE_ID"
  }
  ]
  }
  }
  ]
  }

  datastring = json.dumps(data)

  payload = {"importRequest": datastring}

  current_dir = os.path.dirname(__file__)
  relative_path = "./test_import.csv"

  absolute_file_path = os.path.join(current_dir, relative_path)

  files = [
  ('files', open(absolute_file_path, 'rb'))
  ]
  print(files)

  response = requests.request("POST", url, data=payload, files=files, headers=headers)

  print(response.text.encode('utf8'))
  print(response.status_code)
  ```

  ```text シェルスクリプト.txt theme={null}
  # Using this endpoint requires using sending multi-part form encoded data. Here is an example curl request:
  # importing a file named import_file.csv

  # create a variable for the importRequest JSON
  myJSON=$(cat <<EOF
  {
  "name": "November Marketing Event Leads",
  "importOperations": {
  "0-1": "CREATE"
  },
  "dateFormat": "DAY_MONTH_YEAR",
  "files": [
  {
  "fileName": "import_file.csv",
  "fileFormat": "CSV",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "columnObjectTypeId": "0-1",
  "columnName": "First Name",
  "propertyName": "firstname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Last Name",
  "propertyName": "lastname"
  },
  {
  "columnObjectTypeId": "0-1",
  "columnName": "Email",
  "propertyName": "email",
  "columnType": "HUBSPOT_ALTERNATE_ID"
  }
  ]
  }
  }
  ]
  }
  EOF
  )

  YOUR_ACCESS_TOKEN="xxx-xxx-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

  curl -v \
  -F "files=@import_file.csv;type=text/csv" \
  -F "importRequest=$myJSON;type=application/json" \
  -H "Authorization: Bearer $YOUR_ACCESS_TOKEN" \
  https://api.hubapi.com/crm/v3/imports
  ```
</CodeGroup>

別の例として、1つのファイルをインポートし、マーケティングイベント参加者を作成および更新するものを示します。

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    // Example POST to https://api.hubspot.com/crm/v3/imports
    // Content-Type header set to multipart/form-data

    {
      "name": "Marketing Events Import Example",
      "marketingEventObjectId": 377224141223,
      "importOperations": { "0-1": "UPSERT", "0-54": "CREATE" },
      "dateFormat": "YEAR_MONTH_DAY",
      "timeZone": "America/New_York",
      "files": [
        {
          "fileName": "Marketing Events Import Example.csv",
          "fileFormat": "CSV",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              {
                "columnName": "First Name",
                "columnObjectTypeId": "0-1",
                "propertyName": "firstname",
                "columnType": "STANDARD"
              },
              {
                "columnName": "Last Name",
                "columnObjectTypeId": "0-1",
                "propertyName": "lastname",
                "columnType": "STANDARD"
              },
              {
                "columnName": "Email",
                "columnObjectTypeId": "0-1",
                "propertyName": "email",
                "columnType": "HUBSPOT_ALTERNATE_ID"
              },
              {
                "columnName": "Registered",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "REGISTERED"
              },
              {
                "columnName": "Attended",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "JOINED"
              },
              {
                "columnName": "Left",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "LEFT"
              },
              {
                "columnName": "Cancelled",
                "columnObjectTypeId": "0-54",
                "columnType": "EVENT_TIMESTAMP",
                "marketingEventSubmissionType": "CANCELLED"
              }
            ]
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## 複数のオブジェクトを含む1つのファイルをインポートする

以下は、1つのファイル内のコンタクトと会社をインポートしてラベルに関連付けるためのリクエスト本文の例です。

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    // Example POST to https://api.hubspot.com/crm/v3/imports
    // Content-Type header set to multipart/form-data

    {
      "name": "Association Label Import",
      "dateFormat": "DAY_MONTH_YEAR",
      "files": [
        {
          "fileName": "association label example.xlsx",
          "fileFormat": "SPREADSHEET",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              {
                "columnObjectTypeId": "0-1",
                "columnName": "Email",
                "propertyName": "email"
              },
              {
                "columnObjectTypeId": "0-2",
                "columnName": "Domain",
                "propertyName": "domain"
              },
              {
                "columnName": "Association Label",
                "columnType": "FLEXIBLE_ASSOCIATION_LABEL",
                "columnObjectTypeId": "0-1",
                "toColumnObjectTypeId": "0-2"
              }
            ]
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

## 複数のファイルをインポートする

以下は、2つのファイル内のコンタクトと会社をインポートして関連付けるためのリクエスト本文の例です。コンタクトプロパティー［Eメール］\_\_がファイル内の共通の列です。

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    // Example POST to https://api.hubspot.com/crm/v3/imports
    // Content-Type header set to multipart/form-data

    {
      "name": "Contact Company import",
      "dateFormat": "YEAR_MONTH_DAY",
      "files": [
        {
          "fileName": "contact-import-file.csv",
          "fileFormat": "CSV",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              { "columnObjectTypeId": "0-1", "columnName": "First name", "propertyName": "firstname" },
              { "columnObjectTypeId": "0-1", "columnName": "Last name", "propertyName": "lastname" },
              {
                "columnObjectTypeId": "0-1",
                "columnName": "Email",
                "propertyName": "email",
                "associationIdentifierColumn": true
              }
            ]
          }
        },
        {
          "fileName": "company-import-file.csv",
          "fileFormat": "CSV",
          "fileImportPage": {
            "hasHeader": true,
            "columnMappings": [
              { "columnObjectTypeId": "0-2", "columnName": "Company name", "propertyName": "name" },
              {
                "columnObjectTypeId": "0-2",
                "columnName": "Company domain name",
                "propertyName": "domain",
                "columnType": "HUBSPOT_ALTERNATE_ID"
              },
              {
                "columnObjectTypeId": "0-2",
                "toColumnObjectTypeId": "0-1",
                "columnName": "Email",
                "propertyName": null,
                "foreignKeyType": { "associationTypeId": 280, "associationCategory": "HUBSPOT_DEFINED" }
              }
            ]
          }
        }
      ]
    }
    ```
  </Tab>
</Tabs>

リクエストが成功すると、インポートの取得またはキャンセルに使用できる`importId`を含むレスポンスが返されます。完了すると、[インポートをHubSpotで表示](https://knowledge.hubspot.com/ja/import-and-export/view-and-analyze-previous-imports)できますが、ビュー、リスト、レポート、またはワークフローでインポートを基準にレコードを絞り込む際には、API経由で完了したインポートをオプションとして使用することはできません。

## 以前のインポートを取得する

HubSpotアカウントから全てのインポートを取得するには、`/crm/v3/imports/`に`GET`リクエストを送信します。特定のインポートの情報を取得するには、`/crm/v3/imports/{importId}`に`GET`リクエストを送信します。

インポートを取得すると、インポートの名前、ソース、ファイル形式、言語、日付形式、列マッピングなどの情報が返されます。また、インポートの`state`も返されます。これは次のいずれかである可能性があります。

* `STARTED`：HubSpotはインポートが存在することを認識していますが、インポートの処理はまだ開始されていません。
* `PROCESSING`：インポートがアクティブに処理されています。
* `DONE`：インポートは完了済みです。全てのオブジェクト、アクティビティー、または関連付けが更新または作成されました。
* `FAILED`：インポートの開始時に検出されなかったエラーがありました。インポートは完了しませんでした。
* `CANCELED`：エクスポートが`STARTED`、`PROCESSING`、`DEFERRED`のいずれかの状態だったときに、ユーザーがエクスポートをキャンセルしました。
* `DEFERRED`：最大数（3件）のインポートが同時に処理されています。他のインポートの1つの処理が終了すると、インポートが開始されます。

結果のページ処理と制限について詳しくは、[リファレンスドキュメント](https://developers.hubspot.jp/docs/api-reference/crm-imports-v3/guide)をご確認ください。

<Warning>
  ### 注：

  インポートを取得する際、レスポンスには同じアプリによって実行されたインポートのみが含まれます。HubSpotまたは別のアプリを介して完了したインポートは返されません。
</Warning>

## インポートをキャンセルする

インポートをキャンセルするには、`/crm/v3/imports/{importId}/cancel`に`POST`リクエストを送信します。

## インポートエラーの意味とトラブルシューティング

特定のインポートのエラーを表示するには、`/crm/v3/imports/{importId}/errors`に`GET`リクエストを送信します。[典型的なインポートエラーとその解決方法](https://knowledge.hubspot.com/ja/import-and-export/troubleshoot-import-errors)で詳細をご確認ください。

「列数が正しくありません」、「JSONを解析できません」」、「このURLは解析できません」、「404 text/htmlは受け付けられません」などのエラーが返された場合は、次のようにします。

* ファイル内の各列に列ヘッダーがあり、リクエスト本文に各列の`columnMapping`エントリが含まれていることを確認します。次の条件を満たしている必要があります。
  * リクエスト本文とインポートファイルの列の順序は一致していなければなりません。列の順序が一致しない場合、自動的な並べ替えの試行に失敗し、インポートの開始時にエラーが発生する可能性があります。
  * 全ての列がマッピングされていなければなりません。列がマッピングされていない場合でもインポートリクエストは成功する可能性がありますが、インポートの開始時に「列数が正しくありません」というエラーが発生する場合もあります。
* ファイルの名前がリクエストのJSONの`fileName`フィールドと一致していて、`fileName`フィールドにファイル拡張子が含まれていることを確かめてください（例：*import\_name.csv*）。
* `multipart/form-data`の値のある`Content-Type`がヘッダーが含まれていることを確かめます。

<CodeGroup>
  ```json example.json theme={null}
  Example POST URL:
  https://api.hubapi.com/crm/v3/imports?

  Example importRequest JSON data:
  This example contains 3 columns:
  - First name, mapped to the firstname contact property
  - Email, mapped to the email contact property
  - Company ID, which contains a list of company record IDs
  that the contact will be assocated with.
  {
  "name": "test_import",
  "files": [
  {
  "fileName": "final_emails.csv",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "ignored": false,
  "columnName": "First Name",
  "idColumnType": null,
  "propertyName": "firstname",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Email",
  "idColumnType": "HUBSPOT_ALTERNATE_ID",
  "propertyName": "email",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Company ID",
  "idColumnType": "HUBSPOT_OBJECT_ID",
  "propertyName": null,
  "foreignKeyType": {
  "associationCategory": "HUBSPOT_DEFINED",
  "associationTypeId": 1
  },
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  }
  ]
  }
  }
  ]
  }
  ```

  ```python example.py theme={null}
  # This example a local file named 'final_emails.csv'
  # This file contains a list of contact records to import.
  # Each row in the file contains a column named "Company ID" that contains the companyId
  # that the contact should be associated with.

  import requests
  import json

  post_url = 'http://api.hubapi.com/crm/v3/imports?hapikey=4324...5432'

  importRequest = {
  "name": "test_import",
  "files": [
  {
  "fileName": "final_emails.csv",
  "fileImportPage": {
  "hasHeader": True,
  "columnMappings": [
  {
  "ignored": False,
  "columnName": "First Name",
  "idColumnType": None,
  "propertyName": "firstname",
  "foreignKeyType": None,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": False
  },
  {
  "ignored": False,
  "columnName": "Email",
  "idColumnType": "HUBSPOT_ALTERNATE_ID",
  "propertyName": "email",
  "foreignKeyType": None,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": False
  },
  {
  "ignored": False,
  "columnName": "Company ID",
  "idColumnType": "HUBSPOT_OBJECT_ID",
  "propertyName": None,
  "foreignKeyType": {
  "associationCategory": "HUBSPOT_DEFINED",
  "associationTypeId": 1
  },
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": False
  }
  ]
  }
  }
  ]
  ```

  ```php example.php theme={null}
  <?php
  // This example imports a local file named 'import_file.csv'

  $post_url = "http://api.hubapi.com/crm/v3/imports?hapikey=1234...5342";

  $csv_file = new CURLFile('import_file.csv','text/csv');

  $config_json = '{"name":"test_import","files":[{"fileName":"final_emails.csv","fileImportPage":{"hasHeader":true,"columnMappings":[{"ignored":false,"columnName":"First Name","idColumnType":null,"propertyName":"firstname","foreignKeyType":null,"columnObjectType":"CONTACT","associationIdentifierColumn":false},{"ignored":false,"columnName":"Email","idColumnType":"HUBSPOT_ALTERNATE_ID","propertyName":"email","foreignKeyType":null,"columnObjectType":"CONTACT","associationIdentifierColumn":false},{"ignored":false,"columnName":"Company ID","idColumnType":"HUBSPOT_OBJECT_ID","propertyName":null,"foreignKeyType":{"associationCategory":"HUBSPOT_DEFINED","associationTypeId":1},"columnObjectType":"CONTACT","associationIdentifierColumn":false}]}}]};type=application/json';

  $post_data = array(
  "files" => $csv_file,
  "importRequest" => $config_json
  );

  $ch = curl_init();
  @curl_setopt($ch, CURLOPT_POST, true);
  @curl_setopt($ch, CURLOPT_URL, $post_url);
  @curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

  $response    = @curl_exec($ch); //Log the response from HubSpot as needed.
  $status_code = @curl_getinfo($ch, CURLINFO_HTTP_CODE); //Log the response status code
  @curl_close($ch);
  echo $status_code . " " . $response;
  ?>
  ```

  ```text シェルスクリプト.txt theme={null}
  # Using this endpoint requires using sending multi-part form encoded data. Here is an example curl request:
  # importing a file named import_file.csv

  # create a variable for the importRequest JSON
  myJSON=$(cat <<EOF
  {
  "name": "test_import",
  "files": [
  {
  "fileName": "final_emails.csv",
  "fileImportPage": {
  "hasHeader": true,
  "columnMappings": [
  {
  "ignored": false,
  "columnName": "First Name",
  "idColumnType": null,
  "propertyName": "firstname",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Email",
  "idColumnType": "HUBSPOT_ALTERNATE_ID",
  "propertyName": "email",
  "foreignKeyType": null,
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  },
  {
  "ignored": false,
  "columnName": "Company ID",
  "idColumnType": "HUBSPOT_OBJECT_ID",
  "propertyName": null,
  "foreignKeyType": {
  "associationCategory": "HUBSPOT_DEFINED",
  "associationTypeId": 1
  },
  "columnObjectType": "CONTACT",
  "associationIdentifierColumn": false
  }
  ]
  }
  }
  ]
  }
  EOF
  )

  curl -v \
  -F "files=@import_file.csv;type=text/csv" \
  -F "importRequest=$myJSON;type=application/json" \
  http://api.hubapi.com/crm/v3/imports?hapikey=4123...4321
  ```
</CodeGroup>

<Warning>
  ### 注：

  エラーが発生する場合は、`Content-Type`などの重複するヘッダーがあるかどうかを確認してください。これが発生する可能性があるのは、Postmanを使用しているか、PythonスクリプトのヘッダーにPostmanが含まれている場合です。リクエストを完了する前に重複を削除してください。
</Warning>

## 上限

インポートAPIを使用すると、1日あたり最大80,000,000行をインポートできます。ただし、個々のインポートファイルの上限として、1,048,576行または512MBのうち最初に到達した条件が適用されます。

リクエストが行制限またはサイズ制限のいずれかを超えた場合、HubSpotから429 HTTPエラーが返されます。このような上限に近づいたら、インポートを複数のリクエストに分割することをお勧めします。
