افصل بين البيانات الأصلية والحالية: املأ Rate at transaction والمصدر ووقت السريان مرة واحدة بعد جاهزية العملة والمبلغ. وتحدّث الأتمتة المجدولة Current rate وبياناته الوصفية، كي لا تعيد حركة السوق كتابة سجل المعاملة التاريخي.
إنشاء جدول Transactions
أنشئ جدول Transactions بالحقول From وTo (نص أحادي السطر)، وAmount وRate at transaction وTransaction converted (رقم)، وTransaction source وTransaction market session وTransaction effective at، وArchived (مربع اختيار)، وCurrent rate وCurrent converted (رقم)، ثم Source وMarket session وEffective at وChecked at وSync status وSync error. استخدم التاريخ والوقت للحقول الزمنية، والنص الأحادي لباقي البيانات الوصفية والحالة. أنشئ العرض Needs FX refresh، صفِّ السجلات غير المؤرشفة، ورتّب Checked at من الأقدم مع القيم الفارغة أولاً.
مجموعتا الأسعار لهما معنيان مختلفان. حقول Transaction * لقطة محاسبية أو تدقيقية. أما الحقول الحالية غير المسبوقة فهي رصد إرشادي جديد للوحة أو التقدير. لا تستخدم القيمة الحالية لإعادة صياغة السجل الأصلي.
حفظ سعر المعاملة الأصلي
أنشئ أتمتة Airtable بمشغّل When record matches conditions عندما تكون From وTo وAmount ممتلئة وRate at transaction فارغة. أضف Run a script، واضبط mode على snapshot، ومرّر recordId للسجل المشغّل، ثم الصق السكربت القابل للتنزيل. أضف Automation secret باسم exchangerateApiKey؛ يقرأه السكربت عبر input.secret من دون كشفه للمحررين بلا صلاحية. يكتب snapshot الحقول الأصلية فقط عندما يكون السعر الأصلي فارغاً، وتترك إعادة المحاولة كل القيم الموجودة كما هي.
exchangerateApiKey في قسم Secrets في محرر السكربت للأتمتتين، وحافظ على الاسم. لا تضع القيمة في حقل أو URL أو وصف مشترك أو ثابت داخل الكود؛ تقيد Airtable تحرير السكربتات التي تستخدم secrets بمن يملك صلاحيتها.تحديث التقدير وفق جدول
أنشئ أتمتة ثانية بمشغّل At scheduled time. اضبط mode على refresh واترك recordId فارغاً لمعالجة أول 25 سجلاً في Needs FX refresh، ثم الصق سكربت Airtable الكامل. يرسل كل تشغيل 25 طلب HTTP كحد أقصى، تحت حد Airtable البالغ 50 fetch، ويكتب دفعات من 50 سجلاً كحد أقصى. هذا مناسب لقاعدة تقارير صغيرة؛ الجداول الكبيرة تحتاج طابوراً وتجميعاً مخططاً. عند 25 زوجاً مختلفاً يومياً، خطط لما يصل إلى 750 طلب API خلال 30 يوماً، إضافة إلى اللقطات وإعادات المحاولة.
يحدّث refresh فقط Current rate وCurrent converted وSource وMarket session وEffective at وChecked at، ولا يغيّر أي حقل Transaction *. يؤدي فشل HTTP أو الاستجابة المشوهة إلى ضبط Sync status على Error مع إبقاء آخر قيمة حالية ناجحة.
إظهار الفشل بوضوح
يعني 401 أن عليك فحص Automation secret، ويعني 429 فحص الجدول الزمني أو حد الحساب، بينما يشير غياب الرمز إلى زوج غير صالح أو غير متاح. أبقِ آخر قيمة ناجحة مع Checked at السابق، واستخدم Sync error لتشخيص المشغّل. لا تحوّل الفشل إلى صف سعره صفر.
فحص حدود خطة Airtable
توثيق Run a script في Airtable يشرح Automation secrets وحمايتها من المحررين. وتوضح حدود الأتمتة أن Run a script غير متاح في Free وأن التشغيل الفاشل يُحتسب أيضاً. يكفي التحديث اليومي عادةً لجدول التقارير؛ زيادة التكرار لا تجعل مرجعاً يومياً سعراً لحظياً.
