الانتقال إلى المحتوى الرئيسي
لا يدعم Twenty حقول الصيغ الأصلية بعد (قادمة في 2026)، لكن يمكنك تحقيق النتيجة نفسها باستخدام سير العمل. يتيح لك هذا الحل البديل حساب قيم الحقول وملؤها تلقائيًا — من عمليات الربط البسيطة إلى منطق الأعمال المعقّد.

الاستخدامات الشائعة

حالة الاستخداممثال على الصيغة
الاسم الكاملالاسم الأول + ” ” + اسم العائلة
المبلغ المتوقعالمبلغ × الاحتمال
الأيام حتى الاستحقاقتاريخ الاستحقاق - اليوم
الأيام في المرحلةاليوم - تاريخ دخول المرحلة
درجة العميل المحتملنقاط استنادًا إلى معايير متعددة
للاطلاع على مثال كامل لتتبّع الوقت في مراحل خط الأنابيب، راجع تتبّع مدة بقاء الفرص في كل مرحلة.

صيغة أساسية: الربط

مثال: تعبئة الاسم الكامل تلقائيًا

الهدف: دمج الاسم الأول واسم العائلة تلقائيًا في حقل الاسم الكامل.

إعداد

  1. المشغّل: يتم تحديث السجل أو إنشاؤه (الأشخاص)
  2. التصفية: التحقق من تغيّر الاسم الأول أو اسم العائلة
  3. إجراء الكود:
export const main = async (params) => {
  const { firstName, lastName } = params;

  const fullName = [firstName, lastName]
    .filter(Boolean)
    .join(' ');

  return { fullName };
};
  1. تحديث السجل: عيّن الاسم الكامل إلى {{code.fullName}}

صيغة رقمية: المبلغ المتوقع

مثال: حساب الإيراد المتوقع

الهدف: ضرب مبلغ الفرصة في الاحتمال للحصول على المبلغ المتوقع. اطلع على كيفية إظهار المبلغ المتوقع في خط الأنابيب للاطلاع على سير العمل الكامل.

الإعداد السريع

  1. المشغّل: يتم تحديث السجل (الفرص، حقل المبلغ أو الاحتمال)
  2. إجراء الكود:
export const main = async (params) => {
  const { amount, probability } = params;

  const expectedAmount = (amount || 0) * (probability || 0) / 100;

  return { expectedAmount };
};
  1. تحديث السجل: عيّن المبلغ المتوقع إلى {{code.expectedAmount}}

صيغة التاريخ: حساب الأيام

مثال: الأيام المتبقية حتى استحقاق المهمة

الهدف: حساب عدد الأيام المتبقية حتى تاريخ استحقاق المهمة.

إعداد

  1. المشغّل: يتم تحديث السجل أو إنشاؤه (المهام، حقل تاريخ الاستحقاق)
  2. إجراء الكود:
export const main = async (params) => {
  const { dueDate } = params;

  if (!dueDate) {
    return { daysUntilDue: null };
  }

  const due = new Date(dueDate);
  const today = new Date();
  const diffTime = due - today;
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return { daysUntilDue: diffDays };
};
  1. تحديث السجل: عيّن الأيام حتى الاستحقاق إلى {{code.daysUntilDue}}
تشير القيم السالبة إلى مهام متأخرة عن موعدها. يمكنك استخدام هذا الحقل لتصفية المهام أو فرزها حسب الإلحاح.

صيغة شرطية: درجة العميل المحتمل

مثال: حساب درجة العميل المحتمل بناءً على معايير

الهدف: منح نقاط للعملاء المحتملين استنادًا إلى حجم الشركة والصناعة والتفاعل.

إعداد

  1. المشغّل: يتم تحديث السجل (الأشخاص أو الشركات)
  2. إجراء الكود:
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

  // Company size scoring
  if (companySize === 'Enterprise') score += 30;
  else if (companySize === 'Mid-Market') score += 20;
  else if (companySize === 'SMB') score += 10;

  // Industry scoring
  const targetIndustries = ['Technology', 'Finance', 'Healthcare'];
  if (targetIndustries.includes(industry)) score += 25;

  // Contact info scoring
  if (hasEmail) score += 10;
  if (hasPhone) score += 15;

  // Source scoring
  if (source === 'Referral') score += 20;
  else if (source === 'Website') score += 10;

  return { leadScore: score };
};
  1. تحديث السجل: عيّن درجة العميل المحتمل إلى {{code.leadScore}}

صيغة نصية: استخراج النطاق

مثال: استخراج النطاق من البريد الإلكتروني

الهدف: استخراج نطاق البريد الإلكتروني وتخزينه تلقائيًا.

إعداد

  1. المشغّل: يتم تحديث السجل (الأشخاص، حقل البريد الإلكتروني)
  2. إجراء الكود:
export const main = async (params) => {
  const { email } = params;

  if (!email) return { domain: null };

  const domain = email.split('@')[1]?.toLowerCase();

  return { domain };
};
  1. تحديث السجل: عيّن حقل النطاق إلى {{code.domain}}

أفضل الممارسات

الأداء

  • فعّل المشغّل فقط عند تغيّر الحقول ذات الصلة
  • استخدم عوامل التصفية لتجاوز السجلات التي لا تحتاج إلى حساب
  • تجنّب الحسابات المعقّدة في عمليات سير عمل ذات حجم كبير

التعامل مع الأخطاء

  • تحقق من القيم null/undefined قبل إجراء الحسابات
  • استخدم قيمًا افتراضية عند فقدان البيانات
  • أعد رسائل خطأ واضحة عند فشل الحسابات

”الاختبار”

  • اختبر بحالات الحافة (حقول فارغة، قيم صفرية)
  • تحقّق من الحسابات يدويًا قبل التفعيل
  • راقب تشغيلات سير العمل لرصد النتائج غير المتوقعة

ذات صلة