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

يعد Google Apps Script بيئة بدون خادم تجعل من السهل عليك العمل مع Gmail و Google Drive وغيرها من الخدمات التي تعد جزءًا من منصة مساحة عمل Google.
عندما تقوم بتشغيل أي رمز داخل البرنامج النصي لـ Google Apps ، فإنه في اللغة الإنجليزية البسيطة ، فإنه يدور خادمًا جديدًا مع البيئة المطلوبة ضرورية لتشغيل التطبيق الخاص بك. تم تخصيص هذا الخادم بحد الوقت لوقت المهلة وستوقف بيئة البرنامج النصي للتطبيق تنفيذ الوظيفة إذا تجاوزت الحد الأقصى لوقت التنفيذ.
تجاوز الحد الأقصى لوقت التنفيذ
يختلف الحد الأقصى لوقت التنفيذ بناءً على نوع حساب Google الخاص بك. إذا كنت تقوم بتشغيل رمز البرنامج النصي للتطبيقات داخل حساب Gmail ، فيمكن تشغيل وظائفك لمدة 6 دقائق قبل إنهاءها. بالنسبة لحسابات مساحة عمل Google ، نظرًا لأنك تدفع رسومًا شهرية إلى 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
تجنب الحد الأقصى لوقت التنفيذ
يمكنك تضمين فحص الوقت البسيط في وظيفة البرنامج النصي للتطبيقات الخاصة بك ، ومن المحتمل أن يستغرق الأمر أكثر من بضع دقائق لتنفيذها ، وإيقاف الطلب بأمان على الطلب إذا كان يتجاوز الحد الزمني.
على سبيل المثال ، تقوم تنزيل 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...');
}
};
اكتشاف المزيد من مرابع التكنولوجيا
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.