تقنية

تم تجاوز الحد الأقصى لوقت التنفيذ في Google Apps Script


إن Google Apps Script عبارة عن بيئة بدون خادم تسهل عليك العمل مع Gmail وGoogle Drive والخدمات الأخرى التي تشكل جزءًا من النظام الأساسي لـ Google Workspace.

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

تم تجاوز الحد الأقصى لوقت التنفيذ

يختلف الحد الأقصى لوقت التنفيذ بناءً على نوع حساب Google الخاص بك. إذا كنت تقوم بتشغيل رمز Apps Script داخل حساب Gmail، فيمكن تشغيل وظائفك لمدة 6 دقائق قبل أن يتم إنهاؤها. بالنسبة لحسابات Google Workspace، نظرًا لأنك تدفع رسومًا شهرية إلى Google لكل مستخدم، يكون حد المهلة أكثر سخاءً حيث يبلغ 30 دقيقة.

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

Exceeded maximum execution time
Se ha superado el tiempo máximo de ejecución.
Timpul maxim de executare a fost depășit
تجاوز الحد الأقصى لعدد مرات التنفيذ
Vượt quá thời gian thực thi tối đa
Durée d'exécution autorisée dépassée
Przekroczono maksymalny czas wykonywania
Limite massimo del tempo di esecuzione superato
เวลาประมวลผลเกินขีดจำกัดสูงสุด
Melebihi jumlah eksekusi maksimum
Превышено максимально допустимое время выполнения
Lumagpas sa maximum na oras ng execution

تجنب الحد الأقصى لوقت التنفيذ

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

على سبيل المثال، تقوم الوظيفة الإضافية Download Gmail بحفظ رسائل البريد الإلكتروني من Gmail إلى Google Drive كملفات PDF. فهو يلتقط مجموعة من الرسائل من البريد الوارد ويحولها إلى PDF ويعمل في حلقة. إذا استغرق التنفيذ وقتًا أطول، فسيتم قطعه عن الحلقة تلقائيًا.

const GMAIL_USER = /(gmail|googlemail)/.test(Session.getActiveUser().getEmail());
const ONE_SECOND = 1000;
const ONE_MINUTE = ONE_SECOND * 60;
const MAX_EXECUTION_TIME = ONE_MINUTE * (GMAIL_USER ? 6 : 30);
const NOW = Date.now();

const isTimeLeft = () => {
  return MAX_EXECUTION_TIME > Date.now() - NOW;
};

const thisFunctionTakesTimeToExecution = () => {
  const threads = GmailApp.getInboxThreads(0, 100);
  for (let t = 0; t < threads.length && isTimeLeft(); t += 1) {
    // Save email to Google Drive
    Logger.log('Saving email...');
  }
};



Source link


اكتشاف المزيد من مرابع التكنولوجيا

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى

اكتشاف المزيد من مرابع التكنولوجيا

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading