a0493dbc4b
Created by Github action Co-authored-by: github-actions <github-actions@twenty.com>
226 lines
11 KiB
Plaintext
226 lines
11 KiB
Plaintext
---
|
||
title: CSV でオブジェクト間のリレーションをインポートする
|
||
description: CSV インポート時にレコードを関連付けるための完全なステップバイステップガイド。
|
||
---
|
||
|
||
## 概要
|
||
|
||
本ガイドでは、オブジェクト間のリレーションをインポートする手順を説明します(例:連絡先を会社にリンク、または商談を連絡先にリンク)。
|
||
|
||
<Note>**インポート可能なもの:** 単一のオブジェクトタイプを指す 1 対多のリレーションのみ。 複数のオブジェクトタイプを指すリレーション(例:メモが連絡先と会社の双方にリンク)は、現時点ではインポートに対応していません。</Note>
|
||
|
||
## リレーションの理解
|
||
|
||
### 「1 対多」リレーションとは?
|
||
|
||
1 対多のリレーションでは:
|
||
|
||
* **1 つの**会社には**多数の**連絡先(従業員)がいる
|
||
* **1 つの**会社には**多数の**商談がある
|
||
* **1 つの**連絡先には**多数の**タスクがある
|
||
|
||
「1」の側は**親**です。 「多」の側は**子**です。
|
||
|
||
### Twenty における一般的なリレーション
|
||
|
||
| リレーション | 「1」の側(親) | 「多」の側(子) |
|
||
| --------- | -------- | -------- |
|
||
| 会社 → 連絡先 | 会社 | 人物 |
|
||
| 会社 → 商談 | 会社 | 商談 |
|
||
| 連絡先 → タスク | 人物 | タスク |
|
||
| 連絡先 → メモ | 人物 | ノート |
|
||
|
||
## ステップ 1: 「1」と「多」の側を特定する
|
||
|
||
インポート前に、どのオブジェクトが親で、どれが子かを判断します。
|
||
|
||
**自問:** 「1 つの [オブジェクト A] は多数の [オブジェクト B] を持つか?」
|
||
|
||
* 1 つの会社 → 多数の連絡先 ✓(会社が親)
|
||
* 1 人 → 多数の会社 ✗(誤りです—1 人は 1 社に所属)
|
||
|
||
## ステップ 2: まず親レコードをインポートする
|
||
|
||
参照する前に、親(「1」の側)が Twenty に存在している必要があります。
|
||
|
||
**インポート順:**
|
||
|
||
1. **会社**を最初に(依存関係なし)
|
||
2. **連絡先**を次に(会社にリンク)
|
||
3. **商談**を 3 番目に(会社や連絡先にリンク)
|
||
4. **タスク/メモ**(上記のいずれかにリンク)
|
||
|
||
<Warning>
|
||
**親レコードが存在しない場合、インポートは失敗します。**
|
||
|
||
会社参照を含む連絡先をインポートする前に、必ず会社がインポート済みであることを確認してください。
|
||
</Warning>
|
||
|
||
## ステップ 3: 親の一意識別子を控える
|
||
|
||
親レコードは**一意の識別子**で参照する必要があります。 利用可能な選択肢:
|
||
|
||
| 親オブジェクト | 利用可能な一意識別子 |
|
||
| --------------- | ----------------------------------------- |
|
||
| **会社** | `id`(UUID)、`domain`(推奨)、または任意のカスタム一意フィールド |
|
||
| **連絡先** | `id`(UUID)、`email`、または任意のカスタム一意フィールド |
|
||
| **ワークスペースメンバー** | `id`(UUID)、`email`(名前ではありません) |
|
||
| **カスタムオブジェクト** | `id`(UUID)、または一意としてマークされた任意のフィールド |
|
||
|
||
<Note>**推奨:** 会社には `domain`、連絡先には `email` を使用してください。 これらは人間が読みやすく、スプレッドシートで簡単に確認できます。</Note>
|
||
|
||
### 識別子の見つけ方
|
||
|
||
`id` が必要な場合:
|
||
|
||
1. 親レコードを Twenty からエクスポートする
|
||
2. エクスポートには `id` 列が含まれます
|
||
3. これらの ID を子レコードのファイルで使用する
|
||
|
||
## ステップ 4: リレーションフィールドが存在することを確認する
|
||
|
||
インポート前に、オブジェクト間のリレーションフィールドが存在することを確認します。
|
||
|
||
**確認・作成方法:**
|
||
|
||
1. **設定 → データモデル** に移動する
|
||
2. 子オブジェクト(例:連絡先)を選択する
|
||
3. 親(例:会社)を指すリレーションフィールドを探す
|
||
4. 存在しない場合は作成する:
|
||
* **+ Add field** をクリック
|
||
* **Relation** タイプを選択
|
||
* 親オブジェクトを選択
|
||
|
||
## ステップ 5: CSV ファイルを準備する
|
||
|
||
子側の CSV に、親を一意の識別子で参照する列を追加します。
|
||
|
||
### 例:連絡先を会社にリンクする
|
||
|
||
**連絡先の CSV:**
|
||
|
||
```csv
|
||
firstName,lastName,email,jobTitle,companyDomain
|
||
John,Smith,john@acme.com,CEO,https://acme.com
|
||
Jane,Doe,jane@widgets.co,CTO,https://widgets.co
|
||
Bob,Johnson,bob@techstart.io,Developer,https://techstart.io
|
||
```
|
||
|
||
`companyDomain` 列は会社のドメインを参照します。
|
||
|
||
### 形式要件
|
||
|
||
| 識別子 | 形式 | 例 |
|
||
| ---- | ----------- | -------------------------------------- |
|
||
| ドメイン | URL 形式 | `https://acme.com` |
|
||
| メール | 標準的なメールアドレス | `john@acme.com` |
|
||
| ID | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
|
||
|
||
<Warning>
|
||
**ドメインの形式が重要です!**
|
||
|
||
`https://domain.com` を使用してください(`domain.com` だけではありません)。 これは Twenty が会社のドメインを保存する方法に一致し、照合エラーを防ぎます。
|
||
</Warning>
|
||
|
||
### 重要なルール
|
||
|
||
1. **完全一致が必要** — 値は親レコードと完全に一致している必要があります
|
||
2. **一意の識別子は 1 つだけマッピング** — `companyId` と `companyDomain` の両方を含めないでください
|
||
3. **大文字小文字を区別** — `Acme.com` ≠ `acme.com`
|
||
|
||
## ステップ 6: リレーションをアップロードしてマッピングする
|
||
|
||
1. 子オブジェクト(例:連絡先)に移動
|
||
2. **⋮** → **Import records** をクリック
|
||
3. CSV ファイルをアップロード
|
||
4. フィールドマッピングのステップで:
|
||
* リレーション列(例:`companyDomain`)を見つける
|
||
* それを**会社**のリレーションフィールドにマッピングする
|
||
5. 残りのマッピングを完了する
|
||
6. エラーを確認して確定する
|
||
|
||
Twenty が各子レコードを一致する親に自動でリンクします。
|
||
|
||
## ステップ 7: インポートを確認する
|
||
|
||
インポート後:
|
||
|
||
1. いくつかの子レコード(例:連絡先)を開く
|
||
2. リレーションフィールドに正しい親(例:会社)が表示されていることを確認する
|
||
3. 親レコードを開き、関連レコードのセクションを確認する
|
||
|
||
## 避けるべき一般的なミス
|
||
|
||
| ミス | 問題 | 解決策 |
|
||
| ------------------ | ------------------------------------------- | ----------------------------- |
|
||
| **インポート順の誤り** | 会社より先に連絡先をインポートしている | 常に親を先に、次に子をインポートする |
|
||
| **ドメイン形式の誤り** | `https://acme.com` ではなく `acme.com` を使用している | `https://` を含む完全な URL 形式を使用する |
|
||
| **複数の一意フィールド** | `companyId` と `companyDomain` の両方をマッピングしている | 一意の識別子は 1 つだけマッピングする |
|
||
| **リレーションフィールドがない** | データモデルにリレーションフィールドが存在しない | インポート前に **設定 → データモデル** で作成する |
|
||
| **存在しないレコード** | 親レコードが Twenty に存在しない | 先に親レコードをインポートするか、タイプミスを確認する |
|
||
| **大文字小文字の不一致** | ファイルでは `Acme.com`、Twenty では `acme.com` | 大文字小文字が完全に一致していることを確認する |
|
||
|
||
## ワークスペースメンバーへのリンク
|
||
|
||
ワークスペースメンバー(あなたのチーム)にリンクする場合:
|
||
|
||
* 名前ではなく**メールアドレス**を使用する
|
||
* 例:`owner@yourcompany.com`、"John Smith" ではなく
|
||
|
||
```csv
|
||
taskName,assignedTo
|
||
Follow up with client,john@yourcompany.com
|
||
Review proposal,jane@yourcompany.com
|
||
```
|
||
|
||
## FAQ
|
||
|
||
<AccordionGroup>
|
||
<Accordion title="親レコードにドメインやメールがない場合はどうすればよいですか?">
|
||
次の 2 つの選択肢があります:
|
||
1. Twenty の `id` を使用する(親レコードをエクスポートして ID を取得)
|
||
2. データモデルにカスタムの一意フィールドを作成し、以前のシステムの外部 ID を保存する
|
||
</Accordion>
|
||
|
||
<Accordion title="既存レコードのリレーションを更新できますか?">
|
||
はい! 子レコードの一意の識別子(例:連絡先なら `email`)と新しいリレーションの値を含めてください。 インポートによってリレーションが更新されます。
|
||
</Accordion>
|
||
|
||
<Accordion title="多対多のリレーションをインポートできますか?">
|
||
多対多のリレーションは、現時点ではインポートに対応していません。 これは 2026 年上期に対応予定です。
|
||
</Accordion>
|
||
|
||
<Accordion title="複数のオブジェクトタイプ(例:メモを連絡先と会社の双方)にリンクできますか?">
|
||
複数のオブジェクトタイプを指すリレーションは、現時点ではインポート/エクスポートに対応していません。 これはロードマップにあります。
|
||
</Accordion>
|
||
|
||
<Accordion title="親レコードが存在しない場合はどうなりますか?">
|
||
その行に対してエラーが表示されます。 次のいずれかを行うことができます。
|
||
* 先に親レコードをインポートしてから再インポートする
|
||
* 参照値を修正する
|
||
* インポート対象からその行を削除する
|
||
</Accordion>
|
||
|
||
<Accordion title="リレーションが正しくリンクされないのはなぜですか?">
|
||
よくある原因:
|
||
* 形式の誤り(ドメインには `https://domain.com` を使用)
|
||
* 大文字小文字の不一致(綴りを正確に確認)
|
||
* 親が存在しない(先に親をインポート)
|
||
* 複数の識別子をマッピングしている(1 つだけを使用)
|
||
</Accordion>
|
||
</AccordionGroup>
|
||
|
||
<Warning>
|
||
**注意: 論理削除されたレコードも一意性の判定に含まれます。**
|
||
|
||
「not found」エラーが出るのにレコードが存在するように見える場合は、Command Menu → See deleted records を確認してください。 親が論理削除されている可能性があります。
|
||
</Warning>
|
||
|
||
## トラブルシューティング
|
||
|
||
お困りですか? 次を確認してください:
|
||
|
||
* [インポートエラーを解決する方法](/l/ja/user-guide/data-migration/how-tos/fix-import-errors)
|
||
* [リレーションのインポート機能](/l/ja/user-guide/data-migration/capabilities/import-relations)
|
||
* [一意性制約](/l/ja/user-guide/data-migration/capabilities/uniqueness-constraints)
|