المستوى: متوسط — يفترض أنك تتعامل مع PostgreSQL، تعرف أساسيات Python وAPIs، ولديك حساب Google عادي. الـ Apps Script مش شرط تكون اشتغلت عليه قبل كده، لكن JavaScript أساسي مطلوب.
لو فريقك بيحدّث ملف Google Sheets كل صباح والـ DB بتاع التطبيق محتاج يقرأ نفس البيانات، أنت أمام طريقتين شائعتين والاتنين بيفشلوا. الـ cron كل 5 دقايق بيحرق quota وبيوصل التحديث متأخر، والنسخ اليدوي بيخلّي الفريق ينسى. هنا هتبني pipeline حقيقي ينقل أي تعديل من Sheets لـ PostgreSQL في أقل من ثانيتين، بدون polling، وبدون أدوات SaaS بـ 50 دولار/شهر.
مزامنة Google Sheets مع PostgreSQL في 30 ثانية بدون polling
المشكلة باختصار
السيناريو الواقعي: شركة عقارات عندها 14 مندوب مبيعات، كل واحد فيهم بيحدّث صف في شيت اسمه "العملاء المحتملين" يوميًا. الـ CRM الداخلي مبني على PostgreSQL وبيقرأ من Sheets كل 5 دقايق عبر cron. النتيجة: 288 استدعاء لـ Sheets API يوميًا، تأخير وسطي 2.5 دقيقة قبل ما البيانات تظهر في الـ CRM، وضغط على quota الـ Google لما الفريق يكبر لـ 30 مندوب.
ليه الـ polling طريقة فاشلة فعلاً
الـ polling بمعناه البسيط: السكربت بيسأل Sheets كل X دقيقة "هل في تعديل؟". المشكلة في الفكرة دي 3 طبقات:
- Quota burn: Google Sheets API بيدّيك 300 طلب/دقيقة لكل user. سكربت polling لـ 12 شيت كل دقيقة بيحرق 17,280 طلب يوميًا.
- Latency سيء: متوسط التأخير = نص الفترة. كل 5 دقايق = 2.5 دقيقة تأخير وسطي. للأسف ده مش متوسط نظري، ده اللي بيحصل فعلاً.
- Race conditions: لو مندوبين عدّلوا نفس الصف خلال نفس الدقيقة، التحديث الأقدم بياكل الجديد لما الـ cron يقرأ snapshot واحد.
للمبتدئ بمثال واضح: تخيّل ساعي البريد بيدق على بيتك كل ربع ساعة بيسأل "في خطاب طالع؟". لو مفيش خطاب، الزيارة ضايعة. لو في خطاب اتكتب من 14 دقيقة، أنت ما عرفتش بيه. الحل الذكي: ساعي البريد يجي بس لما تطلبه أنت. ده بالظبط الفرق بين polling وpush.
التعريف العلمي بعد المثال: الفرق هنا هو الفرق بين Pull-based architecture (المستهلك بيسحب البيانات) وPush-based architecture (المنتج بيدفع لما يحصل event). Google Apps Script بيدّيك hooks فعلية على event الـ onEdit، فبتقدر تبني push pipeline من غير infrastructure إضافي ولا message queue.
الحل: Apps Script Trigger + FastAPI Webhook
- اربط trigger على event
onEditداخل Google Apps Script للشيت بتاعك. - Apps Script بيبعت POST request للـ webhook بتاعك مع الصف اللي اتعدّل فقط.
- FastAPI بيستقبل الـ payload، يتحقق من HMAC signature، ويعمل UPSERT على PostgreSQL.
- الـ DB بترجع OK في أقل من 200ms، Apps Script بيكمل بدون انتظار من المستخدم.