الرئيسية
» PC Tips
»
تشغيل بايثون في برنامج Calc من خلال نظام الماكرو في LibreOffice
تشغيل بايثون في برنامج Calc من خلال نظام الماكرو في LibreOffice
إذا كان برنامج بايثون يعمل من سطر الأوامر ولكنه لا يستطيع قراءة أو تعديل جدول البيانات المفتوح في برنامج Calc، فمن المحتمل أنه يعمل خارج بيئة LibreOffice. يجب تشغيل ماكرو بايثون الخاص ببرنامج Calc داخل عملية LibreOffice، حيث يوفر LibreOffice سياق المستند النشط. احفظ البرنامج كوحدة نمطية في مجلد برامج بايثون الخاص بك، ثم صدّر دالته باستخدام الأمر المناسب g_exportedScripts، وشغّله من مربع حوار الماكرو في برنامج Calc.
هذا هو أبسط مسار لأتمتة صغيرة مرتبطة بملف العمل المفتوح. يشرح دليل برمجة بايثون الحالي في LibreOffice كلاً من وحدات الماكرو داخل العملية وبرامج بايثون النصية المتصلة بشكل منفصل؛ وتستخدم الخطوات أدناه طريقة وحدات الماكرو داخل العملية.
لماذا لا يستطيع برنامج بايثون العادي رؤية جدول البيانات المفتوح؟
يُتيح LibreOffice الوصول إلى المستند الحالي لوحدة ماكرو Python قيد التشغيل عبر المتغير العام XSCRIPTCONTEXT. يُعدّ البرنامج النصي الذي يتم تشغيله باستخدام pythonالأمر المعتاد عمليةً منفصلة، لذا فإن المتغير العام غير متاح تلقائيًا. مع ذلك، يُمكنه التواصل مع LibreOffice، لكن ذلك يتطلب إنشاء اتصال UNO بعملية Office قيد التشغيل بالفعل. لإنشاء أول وحدة ماكرو، شغّل الدالة داخل LibreOffice بدلاً من ذلك.
الماكرو في بايثون هو دالة ضمن .pyوحدة نمطية. يحدد ترتيب الوحدة النمطية g_exportedScriptsفي LibreOffice الدوال التي يجب عرضها في قائمة الماكرو. هذه التفاصيل موثقة في مرجع برمجة بايثون الخاص بـ LibreOffice .
كيف يمكن إضافة ماكرو بايثون إلى برنامج Calc؟
1. ابحث عن مجلد نصوص بايثون الخاص بالمستخدم
استخدم موقع "وحدات الماكرو الخاصة بي" إذا كنت ترغب في تشغيل برنامج نصي من أي مستند LibreOffice مفتوح لحساب المستخدم الخاص بك. يُنشئ LibreOffice هذا المجلد %APPDATA%\LibreOffice\4\user\Scripts\pythonعلى نظامي التشغيل Windows و $HOME/.config/libreoffice/4/user/Scripts/pythonLinux وmacOS. إذا Scripts/pythonلم تكن المجلدات موجودة، فأنشئها. يشرح مرجع مواقع البرامج النصية أيضًا حاويات الماكرو الأخرى: وحدات ماكرو التطبيق ووحدات الماكرو المضمنة في المستند.
ضع وحدة الماكرو في مجلد Scripts/python الخاص بالمستخدم حتى يتمكن LibreOffice من إدراجها ضمن وحدات الماكرو الخاصة بي.
تُخزَّن وحدات الماكرو الخاصة بالمستندات داخل ملف مُحدد، ولا يُمكن الوصول إليها إلا أثناء فتح ذلك المستند. بالنسبة لأداة شخصية قابلة لإعادة الاستخدام، يُعدّ استخدام "وحدات الماكرو الخاصة بي" أسهل في الصيانة. تجنّب تعديل مجلد وحدات الماكرو الخاص بتطبيق LibreOffice، فقد يتطلب ذلك صلاحيات المسؤول.
تستقبل الدالة المستند المتصل حاليًا باستدعاء الماكرو، وتختار ورقته الأولى، وتكتب سلسلة نصية تجريبية غير ضارة في الخلية A1. السطر الأخير مهم: فبدون المجموعة المُصدَّرة، قد لا تظهر الدالة كماكرو قابل للتنفيذ. احفظ الملف كنص عادي بامتداد .org .py، وليس كمستند نص منسق أو ملف ينتهي بـ .org .py.txt.
تستخدم الدالة المصدرة XSCRIPTCONTEXT للوصول إلى المستند المفتوح وكتابة قيمة اختبارية في الخلية A1.
يُزوّد LibreOffice XSCRIPTCONTEXTوحدة الماكرو بالمتغير. ولا يُمرّر هذا المتغير تلقائيًا إلى الوحدات التي يستوردها الكود الخاص بك، لذا اجعل الاختبار الأول مكتفيًا بذاته. إذا قمت لاحقًا بتقسيم الدوال القابلة لإعادة الاستخدام إلى وحدات أخرى، فاتبع إرشادات استيراد وحدات Python الخاصة بـ LibreOffice .
3. افتح ملف Calc وقم بتشغيل الدالة المصدرة
افتح جدول بيانات تجريبي في برنامج Calc. استخدم نسخة أو مصنف عمل فارغ أثناء التطوير.
اختر الأدوات > وحدات الماكرو > تشغيل الماكرو .
في قائمة المكتبة، قم بتوسيع "وحدات الماكرو الخاصة بي" ، واختر وحدة بايثون، ثم حدد hello_calcمن أسماء وحدات الماكرو.
انقر فوق تشغيل .
يمكن تشغيل الوظيفة نفسها من خلال إضافة APSO، التي توصي بها LibreOffice لكتابة البرامج النصية بلغة Python داخل العملية، كما توفر واجهة سطر أوامر Python. لا تحتاج إلى APSO لتنفيذ عملية تشغيل الماكرو الأساسية الموضحة هنا.
اختر دالة hello_calc المصدرة ضمن وحدات الماكرو الخاصة بي، ثم قم بتشغيلها من Calc.تؤكد القيمة المرئية في الخلية A1 أن ماكرو الاختبار قد وصل إلى مستند Calc وقام بتغيير إحدى الخلايا.
ماذا لو كان الماكرو مفقودًا أو يبدو أنه لا يفعل شيئًا؟
قم بإجراء هذه الفحوصات بالترتيب بدلاً من تغيير إعدادات الأمان العامة:
الوحدة غير مدرجة: تأكد من وجود الملف في Scripts/pythonمسار المستخدم الصحيح، وأن له .pyلاحقة، وأن اسمه مكتوب بشكل صحيح g_exportedScripts. أعد فتح نافذة الماكرو؛ إذا لم يظهر الملف المضاف حديثًا في LibreOffice، فأغلق البرنامج وأعد تشغيله، ثم تحقق مرة أخرى.
اسم الماكرو مفقود: تأكد من أن المجموعة المصدرة تتضمن كائن الدالة، على سبيل المثال (hello_calc,). الفاصلة تجعل هذه المجموعة مكونة من عنصر واحد في بايثون.
لا يظهر أي شيء في نافذة الأوامر: لا تتوفر مخرجات الأمر print()عند تشغيل وحدات ماكرو بايثون من مربع حوار الماكرو القياسي. يكتب الاختبار أعلاه في الخلية A1، لذا فإن النتيجة مرئية في ورقة العمل. ولأغراض التصحيح التفاعلي، تعرض واجهة سطر الأوامر الخاصة بـ APSO المخرجات.
فشل الاستيراد: تثبيت حزمة لبيئة بايثون الخاصة بنظامك لا يضمن إمكانية استيرادها من قِبل بيئة تشغيل بايثون في LibreOffice. يجب أن تكون الحزمة متوفرة في مسار بايثون الخاص ببيئة التشغيل؛ ويشرح دليل الاستيراد الرسمي مسارات الوحدات النمطية للمستخدم والوحدات النمطية المشتركة. ابدأ باختبار الماكرو بدون عمليات استيراد اختيارية.
يظهر تحذير أمني: لا تُشغّل إلا البرامج النصية التي كتبتها أو راجعتها وتثق بها. وُجدت ميزة أمان الماكرو للحد من التعليمات البرمجية غير الآمنة؛ لذا لا تُخفّض مستوى الأمان العام لمجرد تشغيل ماكرو في مستند غير مألوف. راجع خيارات أمان الماكرو في LibreOffice إذا كنت بحاجة إلى فهم التحذير.
اختر أسلوب العملية الخارجية فقط عندما يتطلب تشغيل الأتمتة بدء التشغيل من طرفية أو مُجدوِل أو تطبيق آخر. يتطلب LibreOffice بدء عملية المكتب باستخدام قناة أو مقبس والاتصال عبر جسر UNO الخاص به؛ فالنص البرمجي المستقل العادي لا يُعادل ماكرو Calc المُدمج في العملية.
كيف يمكنك التحقق من أن الماكرو قد نجح؟
بعد النقر على "تشغيل"، انظر إلى الخلية A1 في الورقة الأولى. يجب أن تحتوي على "Hello from Python" ، ويجب أن يُظهر شريط الصيغة النص نفسه عند تحديد A1. إذا لم تتغير الخلية، فتأكد من أن المصنف المطلوب كان نشطًا وأن الماكرو مُحدد من "وحدات الماكرو الخاصة بي". بمجرد نجاح هذا الاختبار البسيط، استبدل نص الاختبار بالحساب الفعلي واختبره على نسخة من المصنف قبل استخدامه على بيانات مهمة.