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 2s
268 lines
12 KiB
Plaintext
268 lines
12 KiB
Plaintext
---
|
||
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)
|