Files
upstream-mirror e7da97194a
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
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

243 lines
13 KiB
Plaintext

---
title: استيراد جهات الاتصال عبر CSV
description: دليل كامل خطوة بخطوة لاستيراد الأشخاص/جهات الاتصال إلى Twenty.
---
## نظرة عامة
يرشدك هذا الدليل خلال عملية استيراد جهات الاتصال (الأشخاص) إلى Twenty.
## قبل أن تبدأ
### قائمة المتطلبات المسبقة
<Check>
يجب أن يكون ملفك بتنسيق CSV أو XLSX أو XLS
</Check>
<Check>
يحتوي الملف على أقل من 10,000 سجل
</Check>
<Check>
لا توجد عناوين بريد إلكتروني مكررة في ملفك
</Check>
<Check>
**استيراد الشركات أولًا** (إذا كنت تربط الأشخاص بالشركات)
</Check>
<Check>
جميع الحقول المخصصة موجودة في **Settings → Data Model**
</Check>
<Warning>
**استيراد الشركات قبل الأشخاص**
إذا كنت تريد ربط الأشخاص بالشركات، فاستورد الشركات أولًا. يجب أن تكون الشركة موجودة قبل أن تتمكن من الإشارة إليها.
</Warning>
## الخطوة 1: جهّز بيانات جهات الاتصال الخاصة بك
### الحقول المطلوبة والمُوصى بها
| الحقل | هل هو مطلوب؟ | التنسيق | الملاحظات |
| --------------------- | ------------ | ----------------- | -------------------------------- |
| **البريد الإلكتروني** | مُوصى به | `name@domain.com` | يجب أن يكون فريدًا |
| **الاسم الأول** | مُوصى به | نص | |
| **الاسم الأخير** | مُوصى به | نص | |
| **الشركة** | اختياري | النطاق أو المعرّف | يرتبط بشركة موجودة |
| **هاتف** | اختياري | أعمدة متعددة | انظر أدناه |
| **المسمى الوظيفي** | اختياري | نص | |
| **الحقول المخصصة** | اختياري | يختلف | يجب أن تكون موجودة في Data Model |
### تنسيق البريد الإلكتروني
* يجب أن يكون بتنسيق بريد إلكتروني صالح: `name@domain.com`
* **يجب أن يكون فريدًا** — لا تكرارات في ملفك أو في Twenty
* للعناوين الإضافية للبريد الإلكتروني، استخدم عمود **Emails / Additional Emails**:
```
["jane@twenty.com","jane.doe@twenty.com"]
```
### تنسيق الهاتف
الهاتف هو **حقل متداخل** يتطلب أعمدة متعددة:
| العمود | مثال |
| --------------------------------------- | ------------ |
| **Phones / Primary Phone Number** | `4159095555` |
| **Phones / Primary Phone Country Code** | `US` |
| **Phones / Primary Phone Calling Code** | `+1` |
### الربط بالشركات
أضف عمودًا يضم المعرّف الفريد للشركة:
| اسم العمود | التنسيق | مثال |
| --------------- | --------------- | -------------------------------------- |
| `companyDomain` | تنسيق عنوان URL | `https://acme.com` |
| `companyId` | UUID | `c776ee49-f608-4a77-8cc8-6fe96ae1e43f` |
<Note>
**استخدم تنسيق عنوان URL للنطاق** (`https://acme.com`)، وليس التسمية. هذا يطابق كيفية تخزين الشركات في Twenty.
</Note>
### بنية CSV نموذجية
```csv
firstName,lastName,email,jobTitle,companyDomain,Phones / Primary Phone Number,Phones / Primary Phone Country Code
John,Smith,john@acme.com,CEO,https://acme.com,4159095555,US
Jane,Doe,jane@widgets.co,CTO,https://widgets.co,2125551234,US
```
<Note>
**نصيحة احترافية:** انقر **Download sample file** أثناء الاستيراد أو صدّر عددًا قليلًا من الأشخاص الموجودين للاطلاع على أسماء الأعمدة الدقيقة التي تتوقعها Twenty.
</Note>
## الخطوة 2: الوصول إلى ميزة الاستيراد
**الخيار 1: من عرض People**
1. انتقل إلى **People** في الشريط الجانبي الأيسر
2. انقر على أيقونة **⋮** في أعلى اليمين
3. اختر **Import records**
**الخيار 2: باستخدام قائمة الأوامر**
1. اضغط `Cmd + K` (Mac) أو `Ctrl + K` (Windows)
2. اكتب "import"
3. اختر **Import records**
4. اختر **People**
## الخطوة 3: حمّل ملفك
1. انقر فوق **Select file**
2. اختر ملف CSV أو XLSX أو XLS الخاص بك
3. انتظر حتى يقوم Twenty بتحليل ملفك
## الخطوة 4: طابق أعمدتك
يحاول Twenty تلقائيًا مطابقة أعمدتك مع الحقول. راجع وعدّل:
1. **تحقق من المطابقات التلقائية** — تأكد من أنها صحيحة
2. **أصلح المطابقات غير الصحيحة** — انقر على القائمة المنسدلة لاختيار الحقل الصحيح
3. **تخطَّ الأعمدة** — اختر **Do not map** للأعمدة التي لا تريد استيرادها
### قواعد مطابقة مهمة
| نوع العمود | التعيين إلى | الملاحظات |
| --------------------------- | ------------------------------ | ------------------------------------- |
| مرجع الشركة | حقل علاقة **Company** | استخدم النطاق أو المعرّف، وليس كليهما |
| البريد الإلكتروني | **البريد الإلكتروني** | عنوان البريد الإلكتروني الأساسي |
| عناوين بريد إلكتروني إضافية | **Emails / Additional Emails** | تنسيق المصفوفة |
| هاتف | أعمدة منفصلة | الرقم، رمز الدولة، رمز الاتصال |
<img src="/images/user-guide/import-export-data/match-columns.png" style={{width:'100%'}} />
### مطابقة علاقة الشركة
عند مطابقة عمود الشركة:
1. اعثر على عمود مرجع الشركة (مثلًا، `companyDomain`)
2. طابقه مع حقل علاقة **Company**
3. سيقوم Twenty بربط كل شخص بالشركة المطابقة
<Warning>
**طابق معرّفًا فريدًا واحدًا فقط للعلاقات.**
لا تقم بتعيين كلٍّ من `companyId` و`companyDomain` معًا. اختر واحدًا — ويفضَّل استخدام النطاق لأنه مقروء للبشر.
</Warning>
## الخطوة 5: تعيين قيم حقل الاختيار
إذا كانت لديك حقول اختيار أو اختيار متعدد (مثل مصدر العميل المحتمل):
1. تعرض Twenty قيمك إلى جانب الخيارات الموجودة
2. طابِق كل قيمة في ملفك مع خيار في Twenty
3. أو أنشئ خيارات جديدة عند الحاجة
<Note>
تستخدم خيارات الاختيار **أسماء API**، وليس تسميات العرض. تحقّق من **الإعدادات → نموذج البيانات** → فعِّل **الوضع المتقدم** لمشاهدة أسماء API.
</Note>
## الخطوة 6: مراجعة الأخطاء وإصلاحها
قبل إكمال الاستيراد، تقوم Twenty بالتحقق من صحة بياناتك:
1. انقر على **الخطوات التالية**
2. يتم تمييز الصفوف التي تحتوي على أخطاء باللون **الأصفر**
3. **أصلِح الأخطاء مباشرةً** — انقر على خلية وعدّل القيمة
4. **أزِل الصفوف التي بها مشكلات** — انقر على X لتخطي ذلك الصف
### أخطاء شائعة عند استيراد جهات الاتصال
| خطأ | السبب | الحل |
| -------------------------------- | ---------------------------------------------------- | ------------------------------------ |
| **بريد إلكتروني مكرر** | البريد الإلكتروني موجود مسبقًا في Twenty أو في الملف | أزِل التكرار أو حدِّث السجل الموجود |
| **تنسيق بريد إلكتروني غير صالح** | تنسيق البريد الإلكتروني غير صحيح | صحّحه إلى `name@domain.com` |
| **العلاقة غير موجودة** | الشركة غير موجودة | استورد الشركات أولًا أو أصلِح المرجع |
| **حقل مطلوب مفقود** | الحقل المطلوب فارغ | املأ القيمة أو أزِل الصف |
## الخطوة 7: إكمال الاستيراد
1. راجِع ملخص الاستيراد
2. انقر على **تأكيد** للاستيراد
3. انتظر حتى يكتمل الاستيراد
4. تحقَّق بفحص عدد قليل من السجلات وروابطها بالشركة
## بعد استيراد جهات الاتصال
جهات الاتصال الخاصة بك موجودة الآن في Twenty! الخطوات التالية:
1. **تحقَّق من روابط الشركة** — افتح عددًا قليلًا من سجلات الأشخاص للتأكد من أنها مرتبطة بالشركة الصحيحة
2. **استورد الفرص** — واربطها عند الحاجة بالأشخاص والشركات
3. **اضبط مزامنة البريد الإلكتروني** — وصّل صندوق بريدك لعرض سجل البريد الإلكتروني في سجلات جهات الاتصال
## تحديث جهات الاتصال الموجودة
لتحديث جهات الاتصال بدلًا من إنشاء جهات جديدة:
1. ضمّن عمود `email` أو `id` في ملفك
2. تقوم Twenty بمطابقة السجلات باستخدام هذا المعرّف الفريد
3. يتم تحديث جهات الاتصال الموجودة؛ ويتم إنشاء جهات جديدة
راجع [كيفية تحديث السجلات الموجودة](/l/ar/user-guide/data-migration/how-tos/update-existing-records-via-import) للتفاصيل.
## الأسئلة الشائعة
<AccordionGroup>
<Accordion title="لماذا لا يمكن لشخصين أن يمتلكا البريد الإلكتروني نفسه؟">
البريد الإلكتروني معرّف فريد في Twenty. هذا يمنع تكرار جهات الاتصال ويضمن أن مزامنة البريد الإلكتروني تربط الرسائل بالشخص الصحيح على نحوٍ صحيح.
</Accordion>
<Accordion title="ماذا لو كان لديّ أشخاص بلا بريد إلكتروني؟">
يمكنك ترك البريد الإلكتروني فارغًا. مع ذلك، نوصي بإضافة عناوين البريد الإلكتروني عندما يكون ذلك ممكنًا لتحسين جودة البيانات ووظائف مزامنة البريد الإلكتروني.
</Accordion>
<Accordion title="كيف أربط الأشخاص بالشركات أثناء الاستيراد؟">
أضِف عمودًا يحتوي على نطاق الشركة (مثلًا، `https://acme.com`) أو المعرّف. أثناء عملية التعيين، اربط هذا العمود بحقل علاقة الشركة.
</Accordion>
<Accordion title="ماذا لو لم تكن الشركة موجودة بعد؟">
استورد الشركات أولًا، ثم استورد الأشخاص. يجب أن تكون الشركة موجودة قبل أن تتمكّن من الإشارة إليها.
</Accordion>
<Accordion title="هل يمكنني استيراد المعرّف من نظام إدارة علاقات العملاء (CRM) السابق لديّ؟">
نعم! أنشئ حقلًا مخصصًا موسومًا بأنه "unique" في نموذج بياناتك لتخزين المعرّف الخارجي. ملاحظة: اسم الحقل `id` محجوز للمعرّف الداخلي الخاص بـ Twenty.
</Accordion>
<Accordion title="كيف أصلِح أخطاء 'العلاقة غير موجودة'؟">
الشركة التي تشير إليها غير موجودة. إما أن تستورد الشركة أولًا، أو تأكّد من أن النطاق/المعرّف يطابق تمامًا شركةً موجودة.
</Accordion>
</AccordionGroup>
## استكشاف الأخطاء وإصلاحها
هل تواجه مشكلات؟ اطّلع على:
* [كيفية إصلاح أخطاء الاستيراد](/l/ar/user-guide/data-migration/how-tos/fix-import-errors)
* [كيفية استيراد العلاقات](/l/ar/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv)
* [مرجع تعيين الحقول](/l/ar/user-guide/data-migration/capabilities/field-mapping)