ربط Google Sheets مع Make ومنع معالجة الصف مرتين
لربط Google Sheets مع Make دون تكرار العمل، أعط كل طلب معرفًا ثابتًا، واقرأ الصفوف الجاهزة فقط، وسجّل بدء التنفيذ ثم النتيجة. إذا توقف التشغيل بعد تنفيذ الإجراء، افحص الوجهة قبل المحاولة التالية. تغيير الحالة وحده لا يضمن تنفيذًا واحدًا إذا عمل أكثر من سيناريو على الطابور نفسه.
محتويات المقال
جهز صفًا يمثل طلبًا واحدًا
ابدأ في ملف تجريبي مستقل، واجعل الصف الأول للرؤوس. لا تجعل رقم الصف هو هوية الطلب، لأن الفرز والإدراج يغيّرانه. احتفظ بالمعرف نفسه خلال المحاولات، ولا تنسخ الطلب بمعرف جديد لتجاوز خطأ.
| الحقل | وظيفته | مثال |
|---|---|---|
| job_id | هوية لا تتغير | ARCH-001 |
| status | حالة الطلب | READY |
| title | البيانات المطلوب نقلها | ملخص حلقة الصوت |
| target_row | صف محجوز لهذا الطلب في المثال | 2 |
| last_error | سبب التوقف إن وجد | فارغ أولًا |
اجعل READY تعني أن المدخلات اكتملت، وPROCESSING أن التنفيذ بدأ، وDONE أن الوجهة طابقت المطلوب، وREVIEW أن شخصًا يحتاج فحص الحالة. هذه أسماء مقترحة لهذا المثال، وليست حالات يفرضها Make.
اربط الحساب واختر وحدة القراءة المناسبة
- أضف Google Sheets إلى سيناريو جديد، ثم أنشئ الاتصال بحساب يملك صلاحية الملف. راجع الحساب الظاهر في نافذة Google قبل الموافقة.
- اختر ملف التجربة والتبويب بالاسم الصحيح. فعّل وجود الرؤوس وحدد نطاقها، مثل A1:E1.
- اختر Search Rows العادية، واضبط Filter على status يساوي READY، وLimit على 1 في البداية. احتفظ برقم الصف الذي تعيده لخطوة التحديث.
- إذا كان المطلوب مراقبة الإضافات الجديدة فقط، راجع Watch New Rows. أما تعديل صف قديم من REVIEW إلى READY فيحتاج قراءة تبحث عن الحالة، لا الاعتماد على كونه صفًا جديدًا.
توثق صفحة وحدات Google Sheets الرسمية الفرق بين الوحدات. تنبّه إلى أن Search Rows المتقدمة لا تعيد رقم الصف. وتذكر الوثائق أن صفًا فارغًا يوقف معالجة الصفوف التالية في Watch New Rows، لذلك لا تضع فواصل فارغة داخل طابور مراقَب بهذه الوحدة.
رتب القراءة والتحديث والتحقق

بعد القراءة، ارفض الطلب إذا كان job_id فارغًا أو مكررًا في المصدر. ثم حدّث الصف المحدد إلى PROCESSING قبل تنفيذ الإجراء. انقل القيم الأخرى القائمة كما هي عند إعداد Update a Row، حتى لا تفرغ خلايا لم تقصد تعديلها. تجنب الفرز والإدراج أثناء التشغيل، وأعد قراءة هوية الصف قبل الكتابة إذا كانت الورقة تتغير بالتزامن.
بعد الإجراء، اقرأ النتيجة من التطبيق المستقبِل. احفظ مرجعها ثم اكتب DONE. عندما تدعم الوجهة مفتاحًا لمنع تكرار الطلبات، مرّر job_id بالطريقة التي توثقها تلك الخدمة. إذا كانت الوجهة تنشئ عنصرًا جديدًا عند كل استدعاء، لا تفترض أن إعادة الطلب آمنة.
فعّل Process data in order عند الحاجة إلى منع تداخل تشغيلات السيناريو نفسه. تشرح إعدادات Make الرسمية أنه ينتظر انتهاء التنفيذ السابق. هذا لا يقفل الورقة أمام سيناريو ثانٍ أو شخص آخر، لذلك عيّن مسارًا واحدًا مسؤولًا عن الطابور.
مثال أصلي، نقل ملخص إلى صف أرشيف محجوز
هذا مثال مقترح من إعداد المحترف المصري، ولم ننفذه كتجربة تشغيل. هدفه نقل عنوان طلب إلى تبويب Archive، دون إضافة صف جديد عند كل محاولة. يصلح المثال لطابور صغير بوجهات محجوزة، وليس لورقة يغيّر الآخرون ترتيبها أثناء التنفيذ.
- أنشئ Requests بالرؤوس السابقة، وضع في الصف 2 القيم ARCH-001، ثم READY، ثم «ملخص حلقة الصوت»، ثم target_row يساوي 2.
- أنشئ Archive بالأعمدة job_id وtitle. احجز الصف 2 بوضع ARCH-001 في A2 وترك B2 فارغة. لا تمنح طلبًا آخر target_row نفسه.
- اقرأ الطلب الجاهز من Requests، ثم غيّر حالته إلى PROCESSING عبر Update a Row ورقم الصف القادم من البحث.
- اقرأ A2:B2 في Archive بوحدة Get Range Values. إذا لم يكن A2 يساوي ARCH-001، أوقف المسار للمراجعة. إذا طابق العنوان المطلوب بالفعل، تخطّ الكتابة.
- إذا تطابق المعرف وحده، حدّث الصف 2 في Archive إلى المعرف والعنوان المطلوبين عبر Update a Row، ثم اقرأ A2:B2 للتحقق.
- اكتب DONE في Requests بعد تطابق المعرف والعنوان.
في قراءة A2:B2، حدد أن النطاق لا يحتوي على رؤوس، أو عرّف صف الرؤوس A1:B1 صراحة إن ظهر هذا الخيار. وإلا ستتعامل الوحدة مع أول صف في النطاق كرؤوس بدل بيانات.
النتيجة المتوقعة صف أرشيف واحد يحمل المعرف والعنوان. إعادة الكتابة إلى الخانة المحجوزة نفسها لا تضيف صفًا ثانيًا. إذا انقطع الاتصال بعد تحديث B2، تحسم إعادة القراءة ما حدث، بدل إضافة سجل آخر. إذا أردت أرشيفًا متناميًا، ستحتاج تصميمًا لحجز الوجهة ومنع التعارض، فلا تستبدل Update a Row بـAdd a Row دون مراجعة هذا الفرق.
عالج PROCESSING العالقة قبل إعادة التنفيذ
وجود PROCESSING بعد خطأ لا يثبت أن الإجراء فشل. راجع سجل التشغيل والوجهة. إذا وجدت النتيجة الصحيحة، أكمل توثيقها. وإذا تعذر الحسم، انقل الطلب إلى REVIEW مع السبب. لا تجعل أي مسار أخطاء يعيد جميع الطلبات تلقائيًا إلى READY.
راجع خيارات التنفيذ غير المكتمل قبل تفعيل المحاولات الآلية. تخزين التنفيذ غير المكتمل يساعد على متابعة الخطأ، لكنه لا يثبت أن التطبيق الخارجي لم ينفذ الطلب.
افحص هذه الحالات قبل تفعيل الجدول
- طلب READY صحيح ينتقل إلى DONE بعد قراءة النتيجة.
- طلب DONE لا يظهر في القراءة التالية.
- معرف فارغ أو مكرر يتوقف للمراجعة.
- طلب PROCESSING مع نتيجة موجودة لا ينشئ وجهة ثانية.
- صف وجهة يحمل معرفًا مختلفًا لا يتعرض للكتابة.
- تشغيلان متقاربان لا يملكان طلبًا واحدًا، ولا يعمل مسار آخر على الطابور.
سجّل نتائج هذه الفحوص في ملف التجربة قبل نقل التصميم إلى ملفاتك الأساسية. وإذا كان الطابور لمقالات، طبّق أيضًا مراجعة المحتوى قبل النشر، لأن سلامة الأتمتة لا تكفي لاعتماد النص.


