حماية الدفعالتفاصيل
- التعديلات ضمن الباقة مجانية.
- إذا لم تردّ خلال 3 أيام من التسليم، يُقبل العمل تلقائيًا.
يُحجز المبلغ عند الدفع ولا يُحوَّل إلا بعد قبولك العمل.

مثال على النتيجة
دمج ملفات المبيعات الشهرية لـ 9 متاجر في تقرير Excel واحد
طريقة التشغيل
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO المجلد: sales/2026-10، عُثر على 9 ملفات
2026-11-02 09:14:03 INFO shop-01.csv: 1,284 صفًا
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 صفًا
2026-11-02 09:14:04 WARN shop-07.csv: تُخطّيت 3 صفوف بلا سعر (الأسطر 88، 412، 913)
2026-11-02 09:14:05 INFO تم: 10,412 صفًا -> report-2026-10.xlsx (الورقتان «المبيعات» و«الإجماليات»)
إعدادات لا كود
أسماء أعمدة كل متجر موجودة في settings.ini، فالمتجر الجديد أو العمود الذي تغيّر اسمه يعني سطرًا واحدًا هناك:
[columns]
date = التاريخ, تاريخ البيع, اليوم
product = المنتج, الصنف, الاسم
quantity = الكمية, العدد, قطع
price = السعر, سعر الوحدة
جزء من الكود
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""يقرأ ملف متجر واحد ويمنح أعمدته أسماء أعمدة التقرير."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: لا يوجد عمود لـ «{name}» (جرى البحث عن: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
الملفات: أرشيف ZIP يضم merge_sales.py (310 أسطر)، وsettings.ini، وrequirements.txt، وملف README يشرح تثبيت Python وتشغيل السكربت ومعنى كل رسالة في السجل. يشغّله العميل على كمبيوتره الخاص.
العميل: سلسلة صغيرة من 9 متاجر للأدوات المكتبية؛ يرسل كل متجر مبيعاته الشهرية في ملف CSV أو Excel، بأسماء أعمدة تختلف قليلًا من متجر إلى آخر. المهمة: سكربت واحد يقرأ كل ملف في مجلد، ويوحّد الأعمدة في شكل واحد، ويكتب تقرير Excel واحدًا يضم كل المبيعات وورقة بالإجماليات حسب المتجر.
العميل وجميع التفاصيل افتراضية.
عن هذه الخدمة
لا يحتوي Google Drive على زر لنسخ مجلد بكل محتوياته، وبعد بضع سنوات يمتلئ الـ drive المشترك بنسخ قديمة وملفات لا يجدها أحد. ينجز سكربت Google Apps Script هذا المهام التي لا يقوم بها Drive: ينسخ مجلدًا بكل مجلداته الفرعية، ويسرد كل ملف في جدول بالحجم والمالك والنوع وآخر تعديل لترى ما يشغل المساحة، وبدءًا من الباقة القياسية ينقل الملفات الأقدم من التاريخ الذي تحدده إلى مجلد أرشيف. وفي الباقة المميزة يسرد التكرارات المحتملة لتراجعها، ويمكنه إنشاء نسخة مؤرخة من مجلد كل شهر. لا يحذف أبدًا: تُنسخ الملفات أو تُنقل، ووفق قواعدك فقط. قد لا يمكن نقل الملفات التي يملكها آخرون. يستغرق التشغيل نحو ست دقائق، لذا تُعالج المجلدات الكبيرة على أجزاء. تشغّله في حسابك.
ما المشمول
- ما الذي تحصل عليهأرشيف ZIP يضم كود Apps Script وملف README يوضح كيفية إضافته إلى جدول بيانات ومنح الصلاحيات وتشغيله؛ ويُعرض الكود أيضًا في صفحة الطلب.
- نسخ مجلدات كاملةمع كل مجلد فرعي وملف بداخله
- تقرير في جدول بياناتالحجم والمالك والنوع وآخر تعديل لكل ملف
- الأرشفة حسب العمربدءًا من الباقة القياسية، تُنقل الملفات القديمة وفق قاعدة التاريخ لديك
- لا يُحذف شيءالملفات تُنسخ أو تُنقل فقط
- كود مقروءمع تعليقات، ليسهل تغيير أي قاعدة لاحقًا
كيف يعمل
- 1القواعدتصف المجلدات وما يجب أن يحدث لها
- 2الكودنكتب السكربت ودليل تثبيته
- 3جرّبهتشغّله على مجلد تجريبي أولًا وتراجع التقرير
- 4التعديلاتتطلب التعديلات ضمن باقتك وترسل أي رسالة خطأ
ما نحتاجه منك
المجلدات التي يجب أن يعمل عليها السكربت (My Drive أو drive مشترك)، وماذا يُفعل بها (نسخ، تقرير، أرشفة)، والقواعد: كم يجب أن يكون عمر الملف لينتقل إلى الأرشيف، وأين مجلد الأرشيف، وما الذي يُعد تكرارًا محتملًا (الاسم نفسه، الحجم نفسه). العدد التقريبي للملفات، ومن يملكها (أنت أم زملاؤك)، وهل تستخدم حسابًا مجانيًا أم Google Workspace. لقطة شاشة لترتيب المجلدات تساعد.
سنسألك:
- أي مجلدات، وما الذي تحتاجه؟
- ما الذي يذهب إلى الأرشيف؟
- من يملك الملفات؟
- أي شيء يجب ألا يفعله أبدًا
قارن بين الباقات
| الباقات | الأساسيةمهمة واحدة16 US$ | القياسيةالترتيب مع الإعدادات33 US$ | المميزةأداة Drive67 US$ |
|---|---|---|---|
| مدة التنفيذ | 1 يوم | 2 يوم | 3 أيام |
| التعديلات | 1 | 2 | 3 |
| الكود | حتى 150 سطرًا | حتى 400 سطر | حتى 1,000 سطر |
| ملفات الكود | 1 | حتى 3 | حتى 8 |
| ملف الإعدادات | لا | نعم | نعم |
| رسائل خطأ واضحة وسجل | لا | نعم | نعم |
| خيارات التشغيل ودليل لتشغيله وفق جدول زمني | لا | لا | نعم |
| دليل التثبيت والتشغيل (README) | نعم | نعم | نعم |
| اللغة | Google Apps Script | Google Apps Script | Google Apps Script |
| اطلب الأساسية | اطلب القياسية | اطلب المميزة |
حماية الدفع
تدفع عند الطلب، لكن المبلغ لا يُحوَّل إلا مقابل عمل قبلته.
- سعر ثابتلا يتغير سعر الباقة بعد الدفع.
- المبلغ محجوزعند الدفع، يُحجز المبلغ فقط. ولا يُحوَّل إلى Dleex إلا بعد قبولك العمل.
- فحص قبل التسليمتخضع كل نتيجة لفحص الجودة قبل أن تصل إليك، وتراها في صفحة الطلب قبل قبولها.
- تعديلات مجانيةاطلب تعديلات ضمن متطلبات طلبك بالعدد الذي تسمح به الباقة.
- القبول بعد 3 أيامإذا لم تقبل العمل ولم تطلب تعديلات خلال 3 أيام من التسليم، يُقبل تلقائيًا. وإذا كتبت في محادثة الطلب بعد التسليم، يبقى الطلب قيد الانتظار؛ وبعد ردّنا، قد نعيد بدء مهلة 3 أيام وسنُعلمك بذلك في المحادثة.
- إعادة التنفيذ أو استرداد المبلغ كاملًاإذا لم تطابق النتيجة متطلبات طلبك ولم تُصلحها التعديلات، أو استغرق العمل أكثر من ضعف مدة التنفيذ، فاكتب في محادثة الطلب: سنعيد تنفيذ العمل أو نردّ إليك المبلغ كاملًا.
الأسئلة والأجوبة
هل سيحذف التكرارات أو الملفات القديمة؟
لا. تُنقل الملفات القديمة إلى مجلد أرشيف وفق قاعدتك، وتُسرد التكرارات المحتملة فقط في الجدول، فتقرر أنت ما تحذفه بنفسك.
لماذا لا يستطيع نقل بعض الملفات؟
لا يسمح Drive بنقل الملف إلا لأشخاص معينين، حسب مالكه وأدوار الـ drive المشترك. تُسرد الملفات التي لا يستطيع السكربت نقلها في السجل مع السبب.
هل تحتفظ النسخة بإعدادات المشاركة؟
لا: النسخ ملكك وتُشارك كأي ملف جديد. يوضح ملف README كيفية مشاركة المجلد المنسوخ مجددًا.
هل تحصلون على وصول إلى Drive الخاص بي؟
لا. تضيف السكربت في حسابك الخاص وتمنحه الصلاحيات بنفسك. لا نسجّل الدخول ولا نرى ملفاتك أبدًا.
لم تجد إجابتك؟