Class LockService
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
خدمةالقفل
يمنع الوصول المتزامن إلى أقسام من الرمز. يمكن أن يكون ذلك مفيدًا عندما يكون لديك عدة مستخدمين
أو عمليات تعدِّل موردًا مشترَكًا وتريد منع حدوث تعارضات.
الطُرق
الطريقة | نوع القيمة التي يتم عرضها | وصف قصير |
getDocumentLock() | Lock | تحصل على قفل يمنع أي مستخدم للمستند الحالي من تشغيل قسم
من الرمز البرمجي بشكل متزامن. |
getScriptLock() | Lock | تحصل على قفل يمنع أي مستخدم من تشغيل قسم من الرمز البرمجي بشكل متزامن. |
getUserLock() | Lock | تحصل على قفل يمنع المستخدم الحالي من تشغيل قسم من الرمز البرمجي بشكل متزامن. |
مستندات تفصيلية
getDocumentLock()
تحصل على قفل يمنع أي مستخدم للمستند الحالي من تشغيل قسم
من الرمز البرمجي بشكل متزامن. يمكن تنفيذ قسم رمز يحرسه قفل مستند في الوقت نفسه من خلال مثيلات النصوص البرمجية
التي تعمل في سياق مستندات مختلفة، ولكن لا يزيد عن تنفيذ واحد
لأي مستند معيّن. يُرجى العِلم أنّه لا يتم الحصول على القفل فعليًا إلى أن يتم استدعاء Lock.tryLock(timeoutInMillis)
أو Lock.waitLock(timeoutInMillis)
. إذا تمّ استدعاء هذه الطريقة خارج سياق
مستند يحتوي على عنصر (مثل نص برمجي مستقل أو تطبيق ويب)، يتمّ عرض null
.
الإرجاع
Lock
: قفل على مستوى النص البرمجي والمستند الحالي، أو null
إذا تمّت الدعوة من
نص برمجي مستقل أو تطبيق ويب
getScriptLock()
تحصل على قفل يمنع أي مستخدم من تشغيل قسم من الرمز البرمجي بشكل متزامن. لا يمكن تنفيذ قسم رمز برمجي
يحرسه قفل نص برمجي في الوقت نفسه بغض النظر عن هوية
المستخدم. يُرجى العِلم أنّه لا يتم الحصول على القفل فعليًا إلى أن يتم استدعاء Lock.tryLock(timeoutInMillis)
أو Lock.waitLock(timeoutInMillis)
.
الإرجاع
Lock
- قفل على مستوى النص البرمجي
getUserLock()
تحصل على قفل يمنع المستخدم الحالي من تشغيل قسم من الرمز البرمجي بشكل متزامن. يمكن لمستخدمين مختلفين تنفيذ قسم رمز مُراقَب بقفل مستخدم في الوقت نفسه، ولكن لا يمكن تنفيذه أكثر من مرة لأي مستخدم معيّن. يكون القفل "خاصًا" بالمستخدم. يُرجى العِلم أنّه لا يتم الحصول على
القفل فعليًا إلى أن يتم
استدعاء Lock.tryLock(timeoutInMillis)
أو Lock.waitLock(timeoutInMillis)
.
الإرجاع
Lock
- قفل على مستوى النص البرمجي والمستخدم الحالي
إنّ محتوى هذه الصفحة مرخّص بموجب ترخيص Creative Commons Attribution 4.0 ما لم يُنصّ على خلاف ذلك، ونماذج الرموز مرخّصة بموجب ترخيص Apache 2.0. للاطّلاع على التفاصيل، يُرجى مراجعة سياسات موقع Google Developers. إنّ Java هي علامة تجارية مسجَّلة لشركة Oracle و/أو شركائها التابعين.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[[["\u003cp\u003e\u003ccode\u003eLockService\u003c/code\u003e prevents concurrent access to shared resources in Apps Script, avoiding collisions when multiple users or processes modify them.\u003c/p\u003e\n"],["\u003cp\u003eIt offers three types of locks: \u003ccode\u003egetDocumentLock()\u003c/code\u003e, \u003ccode\u003egetScriptLock()\u003c/code\u003e, and \u003ccode\u003egetUserLock()\u003c/code\u003e, each with different scopes of access restriction.\u003c/p\u003e\n"],["\u003cp\u003eThese locks are acquired using \u003ccode\u003eLock.tryLock(timeoutInMillis)\u003c/code\u003e or \u003ccode\u003eLock.waitLock(timeoutInMillis)\u003c/code\u003e methods for controlled access to critical code sections.\u003c/p\u003e\n"],["\u003cp\u003eEach lock type returns a \u003ccode\u003eLock\u003c/code\u003e object that provides methods to manage the lock, ensuring data integrity and consistency in shared environments.\u003c/p\u003e\n"]]],[],null,["# Class LockService\n\nLockService\n\nPrevents concurrent access to sections of code. This can be useful when you have multiple users\nor processes modifying a shared resource and want to prevent collisions. \n\n### Methods\n\n| Method | Return type | Brief description |\n|-----------------------------------------|------------------------------------------|---------------------------------------------------------------------------------------------------------|\n| [getDocumentLock()](#getDocumentLock()) | [Lock](/apps-script/reference/lock/lock) | Gets a lock that prevents any user of the current document from concurrently running a section of code. |\n| [getScriptLock()](#getScriptLock()) | [Lock](/apps-script/reference/lock/lock) | Gets a lock that prevents any user from concurrently running a section of code. |\n| [getUserLock()](#getUserLock()) | [Lock](/apps-script/reference/lock/lock) | Gets a lock that prevents the current user from concurrently running a section of code. |\n\nDetailed documentation\n----------------------\n\n### `get``Document``Lock()`\n\nGets a lock that prevents any user of the current document from concurrently running a section\nof code. A code section guarded by a document lock can be executed simultaneously by script\ninstances running in the context of different documents, but by no more than one execution for\nany given document. Note that the lock is not actually acquired until [Lock.tryLock(timeoutInMillis)](/apps-script/reference/lock/lock#tryLock(Integer))\nor [Lock.waitLock(timeoutInMillis)](/apps-script/reference/lock/lock#waitLock(Integer)) is called. If this method is called outside of the context of a\ncontaining document (such as from a standalone script or webapp), `null` is returned.\n\n#### Return\n\n\n[Lock](/apps-script/reference/lock/lock) --- a lock scoped to the script and current document, or `null` if called from a\nstandalone script or webapp\n\n*** ** * ** ***\n\n### `get``Script``Lock()`\n\nGets a lock that prevents any user from concurrently running a section of code. A code section\nguarded by a script lock cannot be executed simultaneously regardless of the identity of the\nuser. Note that the lock is not actually acquired until [Lock.tryLock(timeoutInMillis)](/apps-script/reference/lock/lock#tryLock(Integer)) or [Lock.waitLock(timeoutInMillis)](/apps-script/reference/lock/lock#waitLock(Integer)) is called.\n\n#### Return\n\n\n[Lock](/apps-script/reference/lock/lock) --- a lock scoped to the script\n\n*** ** * ** ***\n\n### `get``User``Lock()`\n\nGets a lock that prevents the current user from concurrently running a section of code. A code\nsection guarded by a user lock can be executed simultaneously by different users, but by no\nmore than one execution for any given user. The lock is \"private\" to the user. Note that the\nlock is not actually acquired until [Lock.tryLock(timeoutInMillis)](/apps-script/reference/lock/lock#tryLock(Integer)) or [Lock.waitLock(timeoutInMillis)](/apps-script/reference/lock/lock#waitLock(Integer)) is\ncalled.\n\n#### Return\n\n\n[Lock](/apps-script/reference/lock/lock) --- a lock scoped to the script and current user"]]