حتى المطور الأكثر خبرة نادرًا ما يكتب التعليمات البرمجية بشكل صحيح في البداية ومحاولة جعل استكشاف الأخطاء وإصلاحها جزءًا مهمًا من عملية التطوير. ضِمن هذا القسم، سنتناول بعض الأساليب التي يمكن أن تساعدك في العثور على لتصحيح الأخطاء في النصوص البرمجية.
رسائل الخطأ
عندما يواجه النص البرمجي خطأً، تظهر رسالة خطأ. الرسالة مصحوبة برقم سطر يُستخدَم لتحديد المشاكل وحلّها. هناك خياران أساسيان أنواع الأخطاء المعروضة بهذه الطريقة: أخطاء في البنية وأخطاء وقت التشغيل.
أخطاء في البنية
تحدث أخطاء في البنية بسبب كتابة رمز لا يتبع 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" يتسبّب في حدوث هذا الخطأ. بالنسبة حول البحث عن تقارير الأخطاء وتقديمها، راجع الأخطاء: قبل الإبلاغ عن خطأ جديد، ابحث لمعرفة ما إذا كان آخرون قد أبلغوا عنه
يجب الحصول على إذن لتنفيذ هذا الإجراء.
يشير هذا الخطأ إلى أنّ النص البرمجي يفتقد إلى التفويض اللازم للتشغيل. عند تشغيل نص برمجي في محرر النصوص البرمجية أو من عنصر قائمة مخصص تقديم مربّع حوار التفويض للمستخدم ولكن عند تشغيل نص برمجي من مشغل، مضمن في صفحة مواقع Google، أو يتم تشغيله كخدمة، تعذر عرض مربع حوار ويتم عرض هذا الخطأ.
للسماح بالنص البرمجي، افتح "محرِّر النصوص البرمجية" وشغِّل أي دالة. تشير رسالة الأشكال البيانية ستظهر لك رسالة طلب التفويض كي تتمكن من تفويض مشروع النص البرمجي. إذا كانت يحتوي النص البرمجي على خدمات جديدة غير مصرح بها، فيجب إعادة تفويض النص البرمجي.
غالبًا ما يحدث هذا الخطأ عن طريق العوامل المُشغِّلة التي يتم تنشيطها قبل فوّضهم المستخدم. إذا لم يكن لديك إذن بالوصول إلى مشروع النص البرمجي (لأنّ الخطأ يحدث عند إضافة المستخدم، على سبيل المثال)، يمكنك عادةً مصادقة النص البرمجي باستخدام الوظيفة مرة أخرى. في حال استمرار إطلاق عامل تشغيل وظهور هذا الخطأ، يمكنك إزالة من خلال القيام بما يلي:
- على يمين مشروع "برمجة التطبيقات"، انقر على رمز العوامل المشغِّلة .
- على يسار المشغّل الذي تريد إزالته، انقر على رمز المزيد . > احذف المشغِّل.
يمكنك أيضًا إزالة مشغِّلات الإضافات المسببة للمشاكل عن طريق إلغاء تثبيت الإضافة.
تم رفض الوصول: 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
,
فهذا يعني أنك لم تحدد أي نطاقات تفويض في
ملف appsscript.json
لمشروع "برمجة تطبيقات Google" في معظم الحالات،
تحدِّد "برمجة تطبيقات Google" تلقائيًا النطاقات التي يحتاجها النص البرمجي
ولكن عند استخدام خدمة Chat المتقدّمة، عليك إضافة
ونطاقات التفويض التي يستخدمها النص البرمجي
ملف البيان لمشروع برمجة التطبيقات. عرض
ضبط نطاقات صريحة:
لحل هذا الخطأ، أضِف نطاقات التفويض المناسبة.
إلى ملف appsscript.json
لمشروع برمجة التطبيقات كجزء من
الصفيفة oauthScopes
. على سبيل المثال، لاستدعاء دالة الرسم
spaces.messages.create
أضف ما يلي:
"oauthScopes": [
"https://www.googleapis.com/auth/chat.messages.create"
]
طلبات UrlFetch لـ <URL> غير مسموح بها من قِبل المشرف
يمكن لمشرفي Google Workspace تفعيل قائمة مسموح بها في وحدة تحكُّم المشرف. للتحكم في النطاقات الخارجية التي يمكنك الوصول من خلالها برمجة التطبيقات.
لإصلاح الخطأ، عليك التواصل مع المشرف لتطلب منه إضافة عنوان URL. إلى القائمة المسموح بها.
تصحيح الأخطاء
لا تؤدي بعض الأخطاء إلى عرض رسالة خطأ. قد يكون هناك المزيد حيث يكون الخطأ طفيفًا حيث تكون التعليمة البرمجية صحيحة من الناحية الفنية ويمكن تنفيذها، ولكن النتائج ليست ما تتوقعه. إليك بعض الاستراتيجيات للتعامل مع مثل والتحقيق أكثر في نص برمجي لا يعمل بالطريقة التي تناسبك يتوقعونه.
التسجيل
على الرغم من أن تصحيح الأخطاء غالبًا ما يكون مفيدًا تسجيل المعلومات كمشروع نص برمجي وتنفيذه. تتوفر طريقتان لتسجيل المعلومات في برمجة تطبيقات Google هما: خدمة التسجيل في السحابة الإلكترونية بالإضافة إلى خدمات لوحة التحكّم وأداة تسجيل الدخول الأساسية التي تم تضمينها في محرِّر "برمجة تطبيقات Google"
اطّلِع على دليل التسجيل للحصول على المزيد من التفاصيل.
Error Reporting
يتم تلقائيًا تطبيق الاستثناءات التي تحدث بسبب أخطاء وقت التشغيل تم تسجيلها باستخدام خدمة الإبلاغ عن الأخطاء في Google Cloud. تتيح لك هذه الخدمة للبحث عن رسائل الاستثناءات التي ينشئها مشروع النص البرمجي وتصفيتها
للوصول إلى صفحة "إعداد تقارير الأخطاء"، يمكنك الاطّلاع على عرض سجلات Cloud وتقارير الأخطاء في وحدة تحكُّم Google Cloud Platform.
عمليات التنفيذ
في كل مرة يتم فيها تشغيل نص برمجي، تسجّل برمجة التطبيقات سجلاً لعملية التنفيذ، بما في ذلك سجلات Cloud. يمكن أن تساعدك هذه السجلات في فهم الإجراءات التي قام بها النص البرمجي.
لعرض عمليات تنفيذ النص البرمجي في مشروع "برمجة التطبيقات"، انقر على عمليات التنفيذ على يمين الصفحة.
جارٍ التحقّق من حالة خدمة "برمجة تطبيقات Google"
على الرغم من أنّ حزمة Google Workspace نادرة، قد تكون أحيانًا معيّنة الخدمات (مثل Gmail أو Drive) وتواجه مشكلات مؤقتة يمكن أن تؤدي إلى انقطاع الخدمة. عندما يكون هذا يحدث، قد لا تعمل مشاريع برمجة التطبيقات التي تتفاعل مع هذه الخدمات كما هو متوقع.
يمكنك التحقّق من توفُّر خدمة Google Workspace. انقطاع الخدمة من خلال عرض لوحة بيانات حالة Google Workspace. إذا كان الانقطاع تمر بها حاليًا، عليك إما الانتظار إلى أن يتم حلها أو البحث عن مساعدة إضافية في مركز مساعدة Google Workspace أو المشاكل المعروفة في Google Workspace التوثيق.
استخدام برنامج تصحيح الأخطاء ونقاط الإيقاف
للعثور على المشاكل في النص البرمجي، يمكنك تشغيله في وضع تصحيح الأخطاء. عند التنفيذ في وضع تصحيح الأخطاء، يتوقف النص البرمجي مؤقتًا عند وصوله إلى نقطة فاصلة، وهو السطر الذي مميّزًا في النص البرمجي تعتقد أنه قد يكون هناك مشكلة. عندما يكون النص توقفه مؤقتًا قيمة كل متغير في تلك المرحلة الزمنية، مما يسمح لك بفحص الأعمال الداخلية للنص البرمجي دون الحاجة إلى إضافة الكثير من عبارات التسجيل.
إضافة نقطة إيقاف
لإضافة نقطة توقف، مرِّر مؤشر الماوس فوق رقم سطر السطر الذي تريد إضافته نقطة اتصال واحدة. على يمين رقم السطر، انقر على الدائرة. ما يلي تُظهر صورة مثالاً على نقطة توقف تمت إضافتها إلى نص برمجي:
تنفيذ نص برمجي في وضع تصحيح الأخطاء
لتشغيل النص البرمجي في وضع تصحيح الأخطاء، انقر على تصحيح الأخطاء في أعلى المحرِّر.
قبل أن يقوم النص بتشغيل السطر الذي يحتوي على نقطة توقف، يتوقف مؤقتًا ويعرض جدول معلومات تصحيح الأخطاء. يمكنك استخدام هذا الجدول لفحص بيانات مثل قيم المعاملات والمعلومات المخزنة في الكائنات.
للتحكّم في كيفية تشغيل النص البرمجي، في أعلى لوحة "برنامج تصحيح الأخطاء" استخدام "الدخول" و"الوقوف على خطوة" و"الابتعاد" الأزرار. تتيح لك هذه إدارة النص البرمجي سطرًا واحدًا في كل مرة ونفحص كيفية تغير القيم بمرور الوقت.
مشاكل في حسابات متعددة على Google
إذا سجلت الدخول إلى حسابات Google متعددة في الوقت نفسه، لديك مشكلة في الوصول إلى الإضافات وتطبيقات الويب. الدخول المتعدد، أو تسجيل الدخول إلى حسابات Google متعددة في آنٍ واحد، غير معتمد في Apps نص برمجي أو إضافات أو تطبيقات ويب.
إذا فتحت محرِّر "برمجة تطبيقات Google" أثناء تسجيل الدخول إلى أكثر من حساب، الطلبات من Google عليك اختيار الحساب الذي ترغب في مواصلة استخدامه.
إذا فتحت تطبيق ويب أو إضافة وواجهت مشاكل في تسجيل الدخول المتعدد، جرِّب إحدى الحلول التالية:
- اخرج من جميع حسابات Google، ولا تسجِّل الدخول إلا إلى الحساب الذي يحتوي على أو إضافة أو تطبيق ويب تريد الوصول إليه.
- افتح نافذة للتصفح المتخفي في Google Chrome، أو أي تصفح خاص مكافئ ، وقم بتسجيل الدخول إلى حساب Google الذي يتضمن الإضافة أو تطبيق الويب نريد الوصول إليها.
الحصول على المساعدة
يمكن أن يؤدي تصحيح المشكلة باستخدام الأدوات والتقنيات المذكورة أعلاه إلى حل مجموعة متنوعة من المشكلات، ولكن قد تكون هناك مشكلات تواجهها وتتطلب مساعدة إضافية لحلها. راجع صفحة الدعم لـ معلومات حول أماكن طرح الأسئلة والإبلاغ عن الأخطاء.