Files
twenty/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv.mdx
T
github-actions[bot] e0d4492013 i18n - docs translations (#17434)
Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
2026-01-26 09:06:17 +01:00

229 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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)