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

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

رسائل الخطأ

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

أخطاء في البنية

تحدث أخطاء في البنية بسبب كتابة رمز لا يتبع 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. نظرًا لأن هذه ليست عنوان بريد إلكتروني صالح، يظهر الخطأ التالي عند تشغيل النص البرمجي:

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

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

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

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

تم الاتصال بالخدمة لعدد كبير جدًا من المرات: <action name>

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

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

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

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

يجب الحصول على إذن لتنفيذ هذا الإجراء.

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

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

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

  1. على يمين مشروع Apps Script، انقر على العوامل المشغِّلة .
  2. على يسار المشغّل الذي تريد إزالته، انقر على رمز المزيد . &gt; احذف المشغِّل.

يمكنك أيضًا إزالة مشغِّلات الإضافات المسببة للمشاكل عن طريق إلغاء تثبيت الإضافة.

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

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

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

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

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

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

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

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

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

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

حدث خطأ بسبب عدم توفّر إصدار مكتبة أو إصدار نشر. رمز الخطأ Not_Found

تشير رسالة الخطأ هذه إلى أحد ما يلي:

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

الخطأ 400: invalid_scope عند طلب بيانات من Google Chat API باستخدام الخدمة المتقدّمة

إذا ظهرت لك رسالة الخطأ Error 400: invalid_scope مع الرمزSome requested scopes cannot be shown،Some requested scopes cannot be shown يعني ذلك أنّك لم تحدِّد أي نطاقات تفويض في ملفappsscript.json لمشروع Apps Script. في معظم الحالات، تحدِّد "برمجة تطبيقات Google" تلقائيًا النطاقات التي يحتاجها النص البرمجي ولكن عند استخدام خدمة Chat المتقدّمة، عليك إضافة ونطاقات التفويض التي يستخدمها النص البرمجي ملف البيان لمشروع برمجة التطبيقات. عرض ضبط نطاقات صريحة:

لحل هذا الخطأ، أضِف نطاقات التفويض المناسبة. إلى ملف appsscript.json في مشروع "برمجة تطبيقات Google" كجزء من الصفيفة oauthScopes. على سبيل المثال، لاستدعاء دالة الرسم spaces.messages.create أضف ما يلي:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

طلبات UrlFetch لـ <URL> غير مسموح بها من قِبل المشرف

يمكن لمشرفي Google Workspace تفعيل قائمة مسموح بها في وحدة تحكُّم المشرف للتحكّم في النطاقات الخارجية التي يمكنك الوصول إليها من خلال Apps Script.

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

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

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

التسجيل

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

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

Error Reporting

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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