snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 3s

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,267 @@
---
title: CSV ファイルを準備する
description: Twenty へのインポート用にデータをフォーマットするための、完全なステップバイステップガイド。
---
## 概要
このガイドは、インポートを成功させるための CSV ファイルの準備方法を順を追って説明します。 エラーを避けるために、次の手順に従ってください。
## ステップ 1: ファイル要件を確認する
開始する前に、ファイルが次の要件を満たしていることを確認してください。
| 要件 | 詳細 |
| ------------ | --------------------- |
| **形式** | CSV、XLSX、または XLS |
| **サイズ上限** | 1 ファイルあたり 10,000 レコード |
| **エンコーディング** | UTF-8 推奨 |
| **構造** | ファイルごとに 1 つのオブジェクトタイプ |
<Note>10,000 レコードを超えるデータセットは、複数のファイルに分割するか、[API インポート](/l/ja/user-guide/data-migration/how-tos/import-data-via-api)を使用してください。</Note>
## ステップ 2: サンプルファイルをダウンロードする
**これは最も重要なステップです。** サンプルファイルには、Twenty が想定する正確な列名と形式が示されています。
1. オブジェクトビュー(People、Companies など)に移動します。
2. 「**⋮**」→「**Import records**」をクリックします。
3. 「**Download sample file**」をクリックします。
4. このファイルをテンプレートとして使用してください。
<Note>**プロのヒント:** 代わりに、既存のレコードを少数エクスポートします。 これにより、データのあるべきフォーマットの実例が得られ、インポート時に列名が自動的にマッピングされます。</Note>
## ステップ 3: 重複値を削除する
Twenty は一部のフィールドに一意性を強制します。 重複はインポートエラーの原因になります。
| オブジェクト | 一意のフィールド |
| -------------- | ------------------------ |
| **People** | `id`, `email` |
| **会社** | `id`, `domain` |
| **カスタムオブジェクト** | `id` に加え、一意に設定した任意のフィールド |
**インポート前に:**
1. スプレッドシートを一意フィールド(email または domain)で並べ替えます。
2. 重複行を削除または統合します。
3. Twenty に既に存在する重複がないか確認します。
<Warning>**ソフト削除されたレコードも一意性の判定に含まれます。** Command Menu → See deleted records にあるレコードは重複エラーの原因になります。 それらを完全に削除するか、復元して更新してください。</Warning>
## ステップ 4: 各フィールドタイプを正しくフォーマットする
フィールドタイプごとに必要な形式が異なります。 完全なリファレンスは次のとおりです。
### テキストフィールド
* 特別なフォーマットは不要です
* 先頭/末尾の空白は自動的にトリムされます
### メールフィールド
* 有効なメール形式である必要があります: `name@domain.com`
* 一意である必要があります(ファイル内および Twenty 内に重複がないこと)
* 追加のメールについては、**Emails / Additional Emails** 列で次の形式を使用します:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### ドメインフィールド
* **推奨形式**: `https://domain.com`
* これはメールボックス/カレンダーの同期で使用される形式と一致します(重複を防止)
* 両方の列を入力してください。
* **Domain / Domain Label**: `domain.com`
* **Domain / Domain URL**: `https://domain.com`
* ファイル内および Twenty 内で一意である必要があります
### 電話番号フィールド
電話番号は、複数の列を必要とする**ネストされたフィールド**です:
| 列 | 例 |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### 住所フィールド
住所は複数列からなる **入れ子のフィールド** です(空欄のままでよい列もあります):
* **Address / Address 1**: 住所の 1 行目(番地など)
* **Address / Address 2**: 住所の 2 行目(任意)
* **Address / City**: 市区町村名
* **Address / State**: 州または都道府県
* **Address / Country**: 国名
* **Address / Post Code**: 郵便番号(ZIP コード)
### 日付フィールド
ファイル全体で形式を統一してください:
* `YYYY-MM-DD`(推奨): `2024-03-15`
* ISO 8601: `2024-03-15T10:30:00Z`
### 数値フィールド
* 数値のみ(テキスト不可)
* 小数点はピリオドを使用: `1234.56`
* 桁区切りを使用しない(`1,234.56` は不可)
### 通貨フィールド
通貨は **2 列を要する入れ子のフィールド** で、**両方に入力が必要** です:
| 列 | 例 |
| --------------------- | --------- |
| **Amount / Amount** | `1234.56` |
| **Amount / Currency** | `USD` |
### ブール値フィールド
大文字を使用: `TRUE` または `FALSE`
<Warning>小文字の `true` や `false` は動作しません。</Warning>
### 選択フィールド
表示ラベルではなく、オプションの **API 名** を使用してください。
**API 名の見つけ方:**
1. **設定 → データモデル** に移動する
2. オブジェクトとフィールドを選択
3. **高度なモード** を有効化(右下のトグル)
4. API 名をコピー(例: `OPTION_1`。"Option 1" ではありません)
<Note>新しい選択肢は自動的に作成されません。 インポート前に **設定 → データモデル** で追加してください。</Note>
### 複数選択フィールド
API 名を配列形式で記述します:
```
["VALUE1","VALUE2"]
```
### 配列フィールド
JSON 配列形式を使用します:
```
["value1","value2"]
```
### 評価フィールド
次の形式を使用: `RATING_1`、`RATING_2`、`RATING_3`、`RATING_4`、または `RATING_5`
### リンク/URL フィールド
両方の列を入力:
* **Links / Link Label**: `Twenty`
* **Links / Link URL**: `https://twenty.com`
二次リンクは **Links / Secondary Links** 列を使用します:
```
[{"url":"https://twenty.com","label":"Twenty"}]
```
### JSON フィールド
有効な JSON 形式を使用します:
```
{"key":"value","key2":"value2"}
```
### ID フィールド
* **任意**: 指定がない場合、Twenty が ID を自動生成します
* **形式**: UUID(例: `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`)
* **用途**: 新規作成ではなく既存レコードを更新する場合は ID を含めます
## 手順5: リレーション列を追加(レコードをリンクする場合)
レコードを他のオブジェクトにリンクするには(例: People を Companies にリンク)、関連レコードの一意の識別子を含む列を追加します。
**例**: People を Companies にリンク
People の CSV に列を追加:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**リレーションに関する重要なルール:**
* 親レコードは事前に Twenty に存在している必要があります
* ラベルではなく **ドメイン URL** 形式(`https://domain.com`)を使用してください
* 一意の識別子は 1 つだけマッピングしてください(`companyId` と `companyDomain` を両方含めない)
* ワークスペースメンバーには **メールアドレス**(氏名ではなく)を使用してください
<Warning>
**インポート順序は重要です!**
「1」側を「多」側より先にインポートしてください:
1. **会社** を先に
2. **People** を 2 番目(会社参照付き)
3. **商談** を 3 番目に
参照する前に親レコードが存在している必要があります。
</Warning>
詳細な手順については、[リレーションをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)を参照してください。
## 手順6: Twenty にフィールドが存在することを確認
インポートで作成されるのはフィールドではなくレコードです。 インポートしたいフィールドはすべて、あらかじめデータモデルに存在している必要があります。
**インポート前に:**
1. **設定 → データモデル** に移動する
2. 対象オブジェクトを選択する
3. 必要なカスタムフィールドを作成する
4. フィールド名の正確な表記を控える(列ヘッダーと一致している必要があります)
## 手順7: 最終チェックリスト
ファイルをアップロードする前に、次を確認してください:
<Check>ファイル形式が CSV、XLSX、または XLS である</Check>
<Check>ファイルのレコード数が 10,000 未満である</Check>
<Check>エンコーディングが UTF-8 である</Check>
<Check>(People)では重複するメールがなく、(Companies)では重複するドメインがない</Check>
<Check>日付の形式が全体で統一されている</Check>
<Check>ドメインが `https://domain.com` 形式である</Check>
<Check>ブール値フィールドは `TRUE` または `FALSE`(大文字)を使用している</Check>
<Check>選択フィールドは表示ラベルではなく API 名を使用している</Check>
<Check>すべてのカスタムフィールドが 設定 → データモデル に存在する</Check>
<Check>子レコードより先に親レコードをインポートしている</Check>
<Check>リレーション列が既存レコードを参照している</Check>
## 避けるべき一般的なミス
| 誤り | 解決策 |
| -------------------------------- | --------------------------------------- |
| `TRUE` の代わりに `true` を使用している | ブール値は大文字である必要があります |
| 選択フィールドで表示ラベルを使用している | 設定で API 名を確認して使用する |
| Companies より先に People をインポートしている | 常に親オブジェクトから先にインポートする |
| 通貨フィールドで通貨コードが欠けている | Amount と Currency の両方の列を入力する |
| ドメインの形式が誤っている | `https://domain.com` を一貫して使用する |
| リレーションで複数の一意フィールドをマッピングしている | 1 つだけをマッピングする(domain か id のどちらかで、両方は不可) |
## 次のステップ
ファイルの準備ができました! 次へ:
* [会社をインポート](/l/ja/user-guide/data-migration/how-tos/import-companies-via-csv)(これを先にインポート)
* [コンタクトをインポート](/l/ja/user-guide/data-migration/how-tos/import-contacts-via-csv)
* [インポートエラーを修正](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)