تحديد المشاكل وحلّها

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

حتى أن مطوّر البرامج الأكثر خبرة نادرًا ما يكتب الرمز بشكلٍ صحيح في المرة الأولى، ما يجعل تحديد المشاكل وحلّها جزءًا مهمًا من عملية التطوير. في هذا القسم، سنتناول بعض الأساليب التي يمكن أن تساعدك في العثور على الأخطاء في نصوصك البرمجية وفهمها وتصحيحها.

رسائل الخطأ

عندما يواجه النص البرمجي خطأً، يتم عرض رسالة خطأ. تظهر الرسالة مع رقم سطر يُستخدم لتحديد المشاكل وحلّها. هناك نوعان أساسيان من الأخطاء يتم عرضهما بهذه الطريقة: أخطاء البنية وأخطاء وقت التشغيل.

أخطاء البنية

تحدث الأخطاء في البنية بسبب كتابة الرمز الذي لا يتبع جملة JavaScript، ويتم اكتشاف الأخطاء فور محاولة حفظ النص البرمجي. على سبيل المثال، يحتوي مقتطف الرمز التالي على خطأ في البنية:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

مشكلة البنية هنا غير موجودة في حرف ) في نهاية السطر الرابع. عند محاولة حفظ النص البرمجي، ستحصل على الخطأ التالي:

لا يمكن العثور على ) بعد قائمة الوسيطات. (السطر 4)

يسهل عادةً تحديد هذه الأنواع من الأخطاء وحلّها، حيث يمكن العثور عليها على الفور ويكون لها عادةً أسباب بسيطة. يتعذّر عليك حفظ ملف يحتوي على أخطاء في البنية، ما يعني أنه يتم حفظ الرمز الصالح فقط في مشروعك.

أخطاء وقت التشغيل

تحدث هذه الأخطاء باستخدام دالة أو فئة بشكل غير صحيح، ولا يمكن رصدها إلا بعد تشغيل النص البرمجي. على سبيل المثال، يتسبب الرمز التالي في حدوث خطأ في وقت التشغيل:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

تم تنسيق الرمز بشكل صحيح، ولكننا يمرّر قيمة "john"; لعنوان البريد الإلكتروني عند الاتصال بـ MailApp.sendEmail. نظرًا لأن هذا ليس عنوان بريد إلكتروني صالحًا يتم طرح الخطأ التالي عند تشغيل النص البرمجي:

عنوان البريد الإلكتروني غير صالح: هاني (السطر 5)

وما يجعل هذه الأخطاء أكثر صعوبة في تحديد المشاكل وحلّها هو أن البيانات التي تمرِّرها في دالة لا تتم كتابتها في الرمز، بل يتم سحبها من جدول بيانات أو نموذج أو مصدر بيانات خارجي آخر. ويمكن أن يساعدك استخدام أساليب تصحيح الأخطاء أدناه في تحديد سبب هذه الأخطاء.

الأخطاء الشائعة

في ما يلي قائمة بالأخطاء الشائعة وأسبابها.

تم استدعاء الخدمة مرات كثيرة جدًا: <action name>

يشير هذا الخطأ إلى أنك تجاوزت حصتك اليومية لتنفيذ معيّن. على سبيل المثال، قد يظهر لك هذا الخطأ إذا أرسلت عددًا كبيرًا جدًا من الرسائل الإلكترونية في يوم واحد. يتم ضبط الحصص على مستويات مختلفة لحسابات المستهلكين والنطاق والحسابات المميّزة، وتخضع للتغيير في أي وقت بدون إشعار مسبق من Google. يمكنك عرض حدود الحصة للإجراءات المختلفة في مستندات حصة برمجة التطبيقات.

الخادم غير متاح. أو حدث خطأ في الخادم. يُرجى إعادة المحاولة.

هناك بضعة أسباب محتملة لهذه الأخطاء:

  • لا يتوفّر خادم أو نظام Google مؤقتًا. انتظر بضع لحظات وحاوِل تنفيذ النص البرمجي مرة أخرى.
  • هناك خطأ في النص البرمجي لا يحتوي على رسالة خطأ مقابلة. حاوِل تصحيح أخطاء النص البرمجي لمعرفة ما إذا كان بإمكانك عزل المشكلة.
  • هناك خطأ في "برمجة تطبيقات Google" يتسبب في حدوث هذا الخطأ. للحصول على تعليمات حول البحث عن تقارير الأخطاء وحفظها، يُرجى الاطّلاع على الأخطاء. قبل الإبلاغ عن خطأ جديد، ابحث عن الخطأ لمعرفة ما إذا سبق أن أبلغ عنه المستخدمون الآخرون.

يجب منح الإذن لتنفيذ هذا الإجراء.

يشير هذا الخطأ إلى أن النص البرمجي يفتقر إلى التفويض المطلوب لتشغيله. عند تشغيل نص برمجي في "محرّر النص البرمجي"، أو من عنصر قائمة مخصّص، يتم عرض مربّع حوار للتفويض على المستخدم. ومع ذلك، عند تشغيل نص برمجي من مشغّل أو تضمينه مع صفحة "مواقع Google" أو تشغيله كخدمة، لا يمكن تقديم مربّع الحوار وستظهر رسالة الخطأ هذه.

لتفويض النص البرمجي، افتح محرر النصوص البرمجية ونفِّذ أي دالة. تظهر رسالة مطالبة بالتفويض حتى تتمكّن من تفويض مشروع النص البرمجي. إذا كان النص البرمجي يحتوي على خدمات جديدة غير مصرّح بها، يجب إعادة تفويض النص البرمجي.

وغالبًا ما يحدث هذا الخطأ بسبب العوامل المشغِّلة التي يتم تنشيطها قبل أن يسمح المستخدم بذلك. إذا لم يكن لديك حق الوصول إلى مشروع النص البرمجي، (لأن الخطأ يحدث في إضافة تستخدمها، على سبيل المثال، يمكنك تفويض النص البرمجي عادةً باستخدام الإضافة مرة أخرى). إذا استمر تشغيل المشغِّل وسبَّب هذا الخطأ، يمكنك إزالة العوامل المشغِّلة من خلال تنفيذ ما يلي:

  1. على يمين مشروع برمجة التطبيقات، انقر على العوامل المشغِّلة .
  2. على يسار المشغِّل الذي تريد إزالته، انقر على رمز المزيد . > حذف المشغِّل.

يمكنك أيضًا إزالة عوامل تشغيل الإضافات التي تتضمّن مشاكل من خلال إلغاء تثبيت الإضافة.

تم رفض الوصول: DriveApp أو أوقفت سياسة النطاق تطبيقات Drive التابعة لجهات خارجية

يمكن لمشرفي Google Workspace النطاقات إيقاف Drive SDK لنطاقهم، ما يمنع المستخدمين من تثبيت تطبيقات Google Drive واستخدامها. يمنع هذا الإعداد أيضًا المستخدمين من استخدام إضافات "برمجة تطبيقات Google" التي تستخدم خدمة Drive أو خدمة Drive المتقدّمة (حتى إذا كان النص البرمجي مسموحًا به قبل إيقاف المشرف لحزمة تطوير البرامج (SDK) في Drive).

ومع ذلك، إذا تم نشر إضافة أو تطبيق ويب يستخدم خدمة Drive للتثبيت على مستوى النطاق وتم تثبيته من قِبل المشرف لبعض المستخدمين أو جميع المستخدمين في النطاق، وظائف الدوال البرمجية لهؤلاء المستخدمين حتى إذا تم إيقاف حزمة تطوير البرامج (SDK) في Drive في النطاق.

لا يملك النص البرمجي إذنًا للحصول على هوية المستخدم النشط.

تشير إلى أن هوية المستخدم والبريد الإلكتروني النشط غير متاحَين في النص البرمجي. ينتج هذا التحذير عن مكالمة إلى Session.getActiveUser(). ويمكن أن ينتج أيضًا عن استدعاء إلى Session.getEffectiveUser() إذا كان النص البرمجي يعمل في وضع تفويض بخلاف AuthMode.FULL. إذا تمت الإشارة إلى هذا التحذير، فإن المكالمات اللاحقة إلى User.getEmail() لا تعرض سوى &&;;;;.

هناك عدة طرق لتحديد هذا التحذير وحلّه، بناءً على وضع التفويض الذي يعمل عليه النص البرمجي. تم عرض وضع التفويض في الدوال المُشغّلة كخاصية authMode e معلّمة الحدث.

  • وبدلاً من ذلك، يمكنك استخدام AuthMode.FULL في AuthMode.FULL.
  • في AuthMode.LIMITED، تأكّد من السماح المالك للنص البرمجي.
  • في أوضاع التفويض الأخرى، تجنب استدعاء أي من الطريقتين.
  • إذا كنت Google Workspace عميلاً حديثًا ومواجهًا لهذا التحذير من مشغِّل قابل للتثبيت، تأكَّد من أن المشغِّل يعمل كمستخدم داخل مؤسستك.

المكتبة غير متوفّرة

في حال إضافة مكتبة رائجة إلى النص البرمجي، قد تتلقّى رسالة خطأ تفيد بأنّها غير متوفّرة، على الرغم من أنّ المكتبة مدرَجة كاعتمادية على النص البرمجي. قد يكون السبب أنّ عددًا كبيرًا جدًا من الأشخاص يصل إلى المكتبة في الوقت نفسه. لتجنب هذا الخطأ، جرّب أحد الحلول التالية:

  • انسَخ رمز المكتبة والصِقه في النص البرمجي، وأزِل اعتمادية المكتبة.
  • انسخ النص البرمجي للمكتبة وانشره كمكتبة من حسابك. تأكّد من تحديث التبعية في النص البرمجي الأصلي إلى المكتبة الجديدة بدلاً من المكتبة العامة.

تصحيح الأخطاء

ولا تؤدي بعض الأخطاء إلى عرض رسالة خطأ. قد يكون هناك خطأ أكثر تعقيدًا حيث يكون الرمز صحيحًا من الناحية الفنية ويمكن تنفيذه، ولكن النتائج ليست هي ما تتوقّعه. إليك بعض الاستراتيجيات للتعامل مع هذه المواقف والتحقيق في نص برمجي لا يعمل بالطريقة التي تتوقعها.

جارٍ التسجيل

على الرغم من أنّ تصحيح الأخطاء يكون مفيدًا في كثير من الأحيان لتسجيل المعلومات أثناء تنفيذ مشروع نص برمجي. هناك برمجة لتسجيل التطبيقات على Google Apps، وهما: خدمة التسجيل في السحابة الإلكترونية وخدمات السجلّ ووحدة التحكّم الأساسية التي تم دمجها في محرّر "برمجة تطبيقات Google".

راجِع دليل التسجيل للاطّلاع على مزيد من التفاصيل.

Error Reporting

يتم تسجيل الاستثناءات التي تحدث بسبب أخطاء في وقت التشغيل تلقائيًا باستخدام خدمة الإبلاغ عن الأخطاء في Google Cloud. تتيح لك هذه الخدمة البحث في رسائل الاستثناءات وفلترتها في مشروع النص البرمجي.

للوصول إلى إعداد تقارير الأخطاء، يُرجى الاطِّلاع على عرض سجلات Cloud وتقارير الأخطاء في وحدة تحكُّم Google Cloud Platform.

عمليات التنفيذ

في كل مرة يتم فيها تشغيل نص برمجي، تُسجِّل "برمجة التطبيقات" تسجيلاً للتنفيذ، بما في ذلك سجلات Cloud. ويمكن أن تساعدك هذه السجلّات على فهم الإجراءات التي اتّخذها نصك البرمجي.

لعرض عمليات تنفيذ النص البرمجي في مشروع "برمجة تطبيقات Google"، على يمين الصفحة، انقر على عمليات التنفيذ .

التحقّق من حالة خدمة "برمجة تطبيقات Google"

قد تكون خدمات Google Workspace المحدّدة (مثل Gmail أو Drive) نادرة، وأحيانًا تواجه مشاكل مؤقتة يمكن أن تؤدي إلى انقطاع الخدمة. وعند حدوث ذلك، قد لا تعمل مشاريع برمجة التطبيقات التي تتفاعل مع هذه الخدمات على النحو المتوقع.

يمكنك التحقق مما إذا كان هناك Google Workspace انقطاع في الخدمة عن طريق عرض Google Workspace لوحة البيانات الخاصة بالحالة. في حال حدوث انقطاع الخدمة حاليًا، عليك الانتظار حتى يتم حلّها أو طلب المزيد من المساعدة في مستندات Google Workspace مركز المساعدة أو Google Workspace المشاكل المعروفة.

استخدام برنامج تصحيح الأخطاء ونقاط التوقف

لتحديد المشاكل في النص البرمجي، يمكنك تشغيلها في وضع تصحيح الأخطاء. عند التشغيل في وضع تصحيح الأخطاء، يتوقّف النص البرمجي مؤقتًا عندما يصل إلى نقطة إيقاف، وهو سطر تم تمييزه في النص البرمجي تعتقد أنّه قد حدثت مشكلة. عندما يوقف النص البرمجي مؤقتًا، يعرض قيمة كل متغير في هذه المرحلة، ما يسمح لك بفحص العمل الداخلي للنص البرمجي بدون الحاجة إلى إضافة الكثير من بيانات التسجيل.

إضافة نقطة إيقاف

لإضافة نقطة إيقاف، مرِّر مؤشر الماوس فوق رقم السطر الذي تريد إضافة نقطة إيقاف إليه. على يمين رقم السطر، انقر على الدائرة. توضّح الصورة التالية مثالاً لنقطة إيقاف تمت إضافتها إلى نص برمجي:

إضافة نقطة إيقاف

تشغيل نص برمجي في وضع تصحيح الأخطاء

لتشغيل النص البرمجي في وضع تصحيح الأخطاء، انقر على تصحيح الأخطاء في أعلى المحرّر.

وقبل تشغيل النص البرمجي باستخدام النقطة الفاصلة، يتم إيقاف النص مؤقتًا ويعرض جدول معلومات تصحيح الأخطاء. ويمكنك استخدام هذا الجدول لفحص البيانات، مثل قيم المعلّمات والمعلومات المخزّنة في العناصر.

للتحكم في طريقة عمل النص البرمجي، في أعلى لوحة برنامج تصحيح الأخطاء، استخدِم الزرين ";&quot&; الخطوة;&&;;&;;الخطوة فوق&;; و&&;;الخطوة:&النقص: تتيح لك هذه الأدوات تشغيل النص البرمجي سطرًا تلو الآخر وفحص مدى تغيّر القيم بمرور الوقت.

مشاكل في حسابات Google المتعددة

إذا كنت مسجِّلاً الدخول إلى حسابات متعددة على Google في الوقت نفسه، قد تواجه مشكلة في الوصول إلى مشاريع برمجة التطبيقات والإضافات وتطبيقات الويب. تسجيل الدخول المتعدد أو تسجيل الدخول إلى حسابات Google متعددة في آنٍ واحد، غير متاح في برمجة تطبيقات Google أو الإضافات أو تطبيقات الويب.

لحلّ مشاكل تسجيل الدخول المتعدد، جرّب أحد الحلول التالية:

  • اخرج من جميع حساباتك على Google وسجِّل الدخول فقط إلى الحساب الذي يحتوي على مشروع برمجة التطبيقات، أو الإضافة، أو تطبيق الويب الذي تحتاج إلى الوصول إليه.
  • افتح نافذة للتصفُّح المتخفي في Google Chrome أو نافذة تصفُّح بخصوصيّة تامّة، وسجِّل الدخول إلى حساب Google الذي يتضمّن مشروع برمجة التطبيقات أو الإضافة أو تطبيق الويب الذي تحتاج إلى الوصول إليه.

الحصول على المساعدة

يمكن أن يؤدي تصحيح أي مشكلة باستخدام الأدوات والأساليب المذكورة أعلاه إلى حلّ مجموعة متنوعة من المشاكل، ولكن قد تكون هناك مشاكل تواجهك تحتاج إلى مساعدة إضافية لحلّها. اطّلِع على صفحة الدعم للحصول على معلومات عن مكان طرح الأسئلة وملفات الخطأ.