دسترسی و دستکاری انتشار اسکریپت و تریگرها. این کلاس به کاربران اجازه میدهد تا تریگرهای اسکریپت ایجاد کرده و انتشار اسکریپت را به عنوان یک سرویس کنترل کنند.
خواص
| ملک | نوع | توضیحات |
|---|---|---|
Auth Mode | Auth Mode | یک شمارش که مشخص میکند کدام دسته از سرویسهای مجاز Apps Script قادر به اجرای یک تابع فعالشده هستند. |
Authorization Status | Authorization Status | یک نوع شمارش که وضعیت مجوز یک اسکریپت را نشان میدهد. |
Event Type | Event Type | یک نوع شمارش که نوع رویداد فعال شده را نشان میدهد. |
Installation Source | Installation Source | یک شمارش که نشان میدهد اسکریپت چگونه به عنوان یک افزونه برای کاربر نصب شده است. |
Trigger Source | Trigger Source | یک شمارش که منبع رویدادی را که باعث فعال شدن تریگر میشود، نشان میدهد. |
Week Day | Weekday | یک نوع شمارش که روزهای هفته را نشان میدهد. |
روشها
| روش | نوع بازگشتی | شرح مختصر |
|---|---|---|
delete Trigger(trigger) | void | تریگر داده شده را حذف میکند تا دیگر اجرا نشود. |
get Authorization Info(authMode) | Authorization Info | شیءای را دریافت میکند که بررسی میکند آیا کاربر مجوز لازم برای تمام الزامات اسکریپت را اعطا کرده است یا خیر. |
get Authorization Info(authMode, oAuthScopes) | Authorization Info | شیءای را دریافت میکند که بررسی میکند آیا کاربر مجوز دسترسی به محدودههای درخواستی را اعطا کرده است یا خیر. |
get Identity Token() | String|null | اگر دامنه openid اعطا شده باشد، یک توکن هویت Open ID Connect برای کاربر مؤثر دریافت میکند. |
get Installation Source() | Installation Source | یک مقدار شمارشی را برمیگرداند که نشان میدهد اسکریپت چگونه به عنوان یک افزونه برای کاربر فعلی نصب شده است (برای مثال، آیا کاربر آن را شخصاً از طریق فروشگاه وب کروم نصب کرده است یا اینکه یک مدیر دامنه آن را برای همه کاربران نصب کرده است). |
get OAuth Token() | String | توکن دسترسی OAuth 2.0 را برای کاربر فعال دریافت میکند. |
get Project Triggers() | Trigger[] | تمام triggerهای قابل نصب مرتبط با پروژه فعلی و کاربر فعلی را دریافت میکند. |
get Script Id() | String | شناسه منحصر به فرد پروژه اسکریپت را دریافت میکند. |
get Service() | Service | یک شیء دریافت میکند که برای کنترل انتشار اسکریپت به عنوان یک برنامه وب استفاده میشود. |
get User Triggers(document) | Trigger[] | تمام تریگرهای قابل نصب متعلق به این کاربر را در سند داده شده، فقط برای این اسکریپت یا افزونه، دریافت میکند. |
get User Triggers(form) | Trigger[] | تمام تریگرهای قابل نصب متعلق به این کاربر را در فرم داده شده، فقط برای این اسکریپت یا افزونه، دریافت میکند. |
get User Triggers(spreadsheet) | Trigger[] | تمام تریگرهای قابل نصب متعلق به این کاربر را در صفحه گسترده داده شده، فقط برای این اسکریپت یا افزونه، دریافت میکند. |
invalidate Auth() | void | مجوزی را که کاربر مؤثر برای اجرای اسکریپت فعلی دارد، باطل میکند. |
new State Token() | State Token Builder | یک سازنده برای توکن وضعیت ایجاد میکند که میتواند در یک API فراخوانی (مانند جریان OAuth) استفاده شود. |
new Trigger(functionName) | Trigger Builder | فرآیند ایجاد یک تریگر قابل نصب را آغاز میکند که هنگام اجرا، یک تابع مشخص را فراخوانی میکند. |
require All Scopes(authMode) | void | تأیید میکند که آیا کاربر برای تمام حوزههای درخواستشده توسط اسکریپت رضایت داده است یا خیر. |
require Scopes(authMode, oAuthScopes) | void | تأیید میکند که آیا کاربر برای محدودههای درخواستی رضایت داده است یا خیر. |
مستندات دقیق
delete Trigger(trigger)
تریگر داده شده را حذف میکند تا دیگر اجرا نشود.
// Deletes all triggers in the current project. const triggers = ScriptApp.getProjectTriggers(); for (let i = 0; i < triggers.length; i++) { ScriptApp.deleteTrigger(triggers[i]); }
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
trigger | Trigger | محرک حذف. |
مجوز
اسکریپتهایی که از این روش استفاده میکنند، نیاز به مجوز با یک یا چند مورد از حوزههای زیر دارند:
-
https://www.googleapis.com/auth/script.scriptapp
get Authorization Info(authMode)
شیءای دریافت میکند که بررسی میکند آیا کاربر برای تمام الزامات اسکریپت مجوز داده است یا خیر. این شیء همچنین یک URL مجوز برای کاربران فراهم میکند تا در صورت عدم مجوز هر یک از الزامات اسکریپت، آن مجوزها را اعطا کنند.
برخی از اجرای اسکریپتها میتوانند بدون رضایت کاربر برای تمام حوزههای مورد نیاز استفاده شده توسط اسکریپت شروع شوند. اطلاعات موجود در این شیء به شما امکان میدهد دسترسی به بخشهایی از کد را که به حوزههای خاصی نیاز دارند کنترل کنید و برای اجراهای بعدی، مجوز آن حوزهها را درخواست کنید.
const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL); const status = authInfo.getAuthorizationStatus(); const url = authInfo.getAuthorizationUrl();
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
auth Mode | Auth Mode | حالت مجوزدهی که برای آن اطلاعات مجوز درخواست میشود؛ تقریباً در همه موارد، مقدار auth Mode باید Script App.getAuthorizationInfo(ScriptApp.AuthMode.FULL) باشد، زیرا هیچ حالت مجوزدهی دیگری نیازی به اعطای مجوز توسط کاربران ندارد. |
بازگشت
Authorization Info - شیءای که میتواند اطلاعاتی در مورد وضعیت مجوز کاربر ارائه دهد.
get Authorization Info(authMode, oAuthScopes)
شیءای دریافت میکند که بررسی میکند آیا کاربر برای حوزههای درخواستی مجوز داده است یا خیر. این شیء همچنین یک URL مجوز برای کاربران فراهم میکند تا در صورت عدم مجوز هر یک از حوزههای درخواستی، آن مجوزها را اعطا کنند.
برخی از اجرای اسکریپتها میتوانند بدون رضایت کاربر برای تمام حوزههای مورد نیاز استفاده شده توسط اسکریپت شروع شوند. اطلاعات موجود در این شیء به شما امکان میدهد دسترسی به بخشهایی از کد را که به حوزههای خاصی نیاز دارند کنترل کنید و برای اجراهای بعدی درخواست مجوز برای آن حوزهها را بدهید. حوزههایی که نامعتبر هستند یا توسط اسکریپت مورد نیاز نیستند، منجر به خطا میشوند.
const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL, [ 'https://www.googleapis.com/auth/documents', 'https://www.googleapis.com/auth/presentations', ]); const status = authInfo.getAuthorizationStatus(); const url = authInfo.getAuthorizationUrl();
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
auth Mode | Auth Mode | حالت مجوزدهی که برای آن اطلاعات مجوز درخواست میشود؛ تقریباً در همه موارد، مقدار auth Mode باید Script App.AuthMode.FULL باشد، زیرا هیچ حالت مجوزدهی دیگری نیازی به اعطای مجوز توسط کاربران ندارد. |
oAuthScopes | String[] | حوزههای OAuth که اطلاعات مجوز برای آنها درخواست میشود. |
بازگشت
Authorization Info - شیءای که اطلاعاتی در مورد وضعیت مجوز کاربر و یک URL مجوز در صورت عدم وجود برخی از رضایتنامهها ارائه میدهد.
get Identity Token()
اگر دامنه openid اعطا شده باشد، یک توکن هویت Open ID Connect برای کاربر مؤثر دریافت میکند. این دامنه به طور پیشفرض گنجانده نشده است و برای درخواست آن باید آن را به عنوان یک دامنه صریح در فایل مانیفست اضافه کنید. برای بازگرداندن اطلاعات بیشتر کاربر در توکن، دامنههای https://www.googleapis.com/auth/userinfo.email یا https://www.googleapis.com/auth/userinfo.profile را وارد کنید.
توکن شناسه بازگردانده شده یک توکن وب JSON (JWT) کدگذاری شده است و برای استخراج اطلاعات از آن باید رمزگشایی شود. مثالهای زیر نحوه رمزگشایی توکن و استخراج شناسه پروفایل گوگل کاربر را نشان میدهد.
const idToken = ScriptApp.getIdentityToken(); const body = idToken.split('.')[1]; const decoded = Utilities .newBlob( Utilities.base64Decode(body), ) .getDataAsString(); const payload = JSON.parse(decoded); Logger.log(`Profile ID: ${payload.sub}`);
بازگشت
String|null — توکن هویت در صورت موجود بودن؛ در غیر این صورت null .
get Installation Source()
یک مقدار شمارشی را برمیگرداند که نشان میدهد اسکریپت چگونه به عنوان یک افزونه برای کاربر فعلی نصب شده است (برای مثال، آیا کاربر آن را شخصاً از طریق فروشگاه وب کروم نصب کرده است یا اینکه یک مدیر دامنه آن را برای همه کاربران نصب کرده است).
بازگشت
Installation Source — منبع نصب.
get OAuth Token()
توکن دسترسی OAuth 2.0 را برای کاربر فعال دریافت میکند. اگر محدودههای OAuth اسکریپت برای تأیید اعتبار یک API گوگل دیگر که معمولاً به جریان OAuth خاص خود نیاز دارد (مانند Google Picker ) کافی باشد، اسکریپتها میتوانند با ارسال این توکن، از درخواست مجوز دوم عبور کنند. توکن پس از مدتی (حداقل چند دقیقه) منقضی میشود. اسکریپتها باید خطاهای مجوز را مدیریت کرده و این متد را برای دریافت توکن جدید در صورت نیاز فراخوانی کنند.
توکنی که توسط این روش برگردانده میشود، فقط شامل محدودههایی است که اسکریپت در حال حاضر به آنها نیاز دارد. محدودههایی که قبلاً مجاز بودهاند اما دیگر توسط اسکریپت استفاده نمیشوند، در توکن برگردانده شده لحاظ نمیشوند. اگر به محدودههای OAuth اضافی فراتر از آنچه خود اسکریپت نیاز دارد، نیاز باشد، میتوان آنها را در فایل مانیفست اسکریپت مشخص کرد .
شما میتوانید از این متد برای فراخوانی APIهای گوگل که Apps Script مستقیماً از آنها پشتیبانی نمیکند، استفاده کنید. توکن برگردانده شده را در هدر `Authorization` یک درخواست HTTP با استفاده از Url Fetch App.fetch(url, params) ارسال کنید.
const url = 'https://www.googleapis.com/drive/v3/files'; const method = 'GET'; const headers = { Authorization: 'Bearer ' + ScriptApp.getOAuthToken(), }; const response = UrlFetchApp.fetch(url, { method, headers, });
بازگشت
String - نمایش رشتهای از توکن OAuth 2.0.
get Project Triggers()
تمام triggerهای قابل نصب مرتبط با پروژه فعلی و کاربر فعلی را دریافت میکند.
Logger.log( `Current project has ${ScriptApp.getProjectTriggers().length} triggers.`, );
بازگشت
Trigger[] — آرایهای از triggerهای کاربر فعلی مرتبط با این پروژه.
مجوز
اسکریپتهایی که از این روش استفاده میکنند، نیاز به مجوز با یک یا چند مورد از حوزههای زیر دارند:
-
https://www.googleapis.com/auth/script.scriptapp
get Script Id()
شناسه منحصر به فرد پروژه اسکریپت را دریافت میکند. این روش، روش ترجیحی برای دریافت شناسه منحصر به فرد برای پروژه اسکریپت است، برخلاف . این شناسه میتواند در تمام مکانهایی که قبلاً کلید پروژه ارائه شده است، استفاده شود.get Project Key()
بازگشت
String — شناسه پروژه اسکریپت.
get Service()
یک شیء دریافت میکند که برای کنترل انتشار اسکریپت به عنوان یک برنامه وب استفاده میشود.
// Get the URL of the published web app. const url = ScriptApp.getService().getUrl();
بازگشت
Service - شیءای که برای مشاهده و کنترل انتشار اسکریپت به عنوان یک برنامه وب استفاده میشود.
get User Triggers(document)
تمام تریگرهای قابل نصب متعلق به این کاربر را در سند داده شده، فقط برای این اسکریپت یا افزونه، دریافت میکند. از این روش نمیتوان برای دیدن تریگرهای متصل به اسکریپتهای دیگر استفاده کرد.
const doc = DocumentApp.getActiveDocument(); const triggers = ScriptApp.getUserTriggers(doc); // Log the handler function for the first trigger in the array. Logger.log(triggers[0].getHandlerFunction());
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
document | Document | یک فایل Google Docs که ممکن است حاوی تریگرهای قابل نصب باشد. |
بازگشت
Trigger[] — آرایهای از triggerها که متعلق به این کاربر در سند داده شده است.
مجوز
اسکریپتهایی که از این روش استفاده میکنند، نیاز به مجوز با یک یا چند مورد از حوزههای زیر دارند:
-
https://www.googleapis.com/auth/script.scriptapp
get User Triggers(form)
تمام تریگرهای قابل نصب متعلق به این کاربر را در فرم داده شده، فقط برای این اسکریپت یا افزونه دریافت میکند. از این روش نمیتوان برای دیدن تریگرهای متصل به اسکریپتهای دیگر استفاده کرد.
const form = FormApp.getActiveForm(); const triggers = ScriptApp.getUserTriggers(form); // Log the trigger source for the first trigger in the array. Logger.log(triggers[0].getTriggerSource());
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
form | Form | یک فایل گوگل فرم که ممکن است حاوی تریگرهای قابل نصب باشد. |
بازگشت
Trigger[] — آرایهای از triggerهای متعلق به این کاربر در فرم داده شده.
مجوز
اسکریپتهایی که از این روش استفاده میکنند، نیاز به مجوز با یک یا چند مورد از حوزههای زیر دارند:
-
https://www.googleapis.com/auth/script.scriptapp
get User Triggers(spreadsheet)
تمام تریگرهای قابل نصب متعلق به این کاربر را در صفحه گسترده داده شده، فقط برای این اسکریپت یا افزونه، دریافت میکند. از این روش نمیتوان برای دیدن تریگرهای متصل به اسکریپتهای دیگر استفاده کرد.
const ss = SpreadsheetApp.getActiveSpreadsheet(); const triggers = ScriptApp.getUserTriggers(ss); // Log the event type for the first trigger in the array. Logger.log(triggers[0].getEventType());
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
spreadsheet | Spreadsheet | یک فایل Google Sheets که ممکن است حاوی تریگرهای قابل نصب باشد. |
بازگشت
Trigger[] — آرایهای از triggerهای متعلق به این کاربر در صفحه گسترده داده شده.
مجوز
اسکریپتهایی که از این روش استفاده میکنند، نیاز به مجوز با یک یا چند مورد از حوزههای زیر دارند:
-
https://www.googleapis.com/auth/script.scriptapp
invalidate Auth()
مجوزی را که کاربر مؤثر برای اجرای اسکریپت فعلی دارد، باطل میکند. برای باطل کردن هرگونه مجوز برای اسکریپت فعلی استفاده میشود. این امر به ویژه برای توابعی که به عنوان مجوز یکباره برچسبگذاری شدهاند، مفید است. از آنجایی که توابع مجوز یکباره فقط در اولین اجرا پس از کسب مجوز اسکریپت قابل فراخوانی هستند، اگر میخواهید بعداً عملی انجام دهید، باید هرگونه مجوزی را که اسکریپت داشته است لغو کنید تا کاربر بتواند دوباره پنجره مجوز را ببیند.
ScriptApp .invalidateAuth();
پرتابها
Error - زمانی که اعتبارسنجی ناموفق باشد
new State Token()
یک سازنده برای توکن وضعیت ایجاد میکند که میتواند در یک API فراخوانی (مانند جریان OAuth) استفاده شود.
// Generate a callback URL, given the name of a callback function. The script // does not need to be published as a web app; the /usercallback URL suffix // replaces /edit in any script's URL. function getCallbackURL(callbackFunction) { // IMPORTANT: Replace string below with the URL from your script, minus the // /edit at the end. const scriptUrl = 'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz'; const urlSuffix = '/usercallback?state='; const stateToken = ScriptApp.newStateToken() .withMethod(callbackFunction) .withTimeout(120) .createToken(); return scriptUrl + urlSuffix + stateToken; }
در بیشتر جریانهای OAuth2، توکن state مستقیماً به نقطه پایانی مجوزدهی (authentication endpoint) ارسال میشود (نه به عنوان بخشی از URL برگشتی)، و سپس نقطه پایانی مجوزدهی آن را به عنوان بخشی از URL برگشتی ارسال میکند.
برای مثال:
- این اسکریپت کاربر را به آدرس اینترنتی احراز هویت OAuth2 هدایت میکند:
https://accounts.google.com/o/oauth2/auth?state=token_generated_with_this_method&callback_uri=https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback&other_oauth2_parameters - کاربر روی تأیید کلیک میکند و صفحه تأیید OAuth2 کاربر را به
https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grantsهدایت میکند. - تغییر مسیر فوق (بازگشت به
http://script.google.com/...)، باعث میشود مرورگر درخواستی به/usercallbackارسال کند که متد مشخص شده توسطState Token Builder.withMethod(method)را فراخوانی میکند.
بازگشت
State Token Builder - شیئی که برای ادامه فرآیند ساخت توکن وضعیت استفاده میشود.
new Trigger(functionName)
فرآیند ایجاد یک تریگر قابل نصب را آغاز میکند که هنگام اجرا، یک تابع مشخص را فراخوانی میکند.
// Creates an edit trigger for a spreadsheet identified by ID. ScriptApp.newTrigger('myFunction') .forSpreadsheet('1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3') .onEdit() .create();
قبل از ایجاد یک تریگر، بررسی کنید که تابع مرتبط تمام مجوزهای لازم OAuth را دارد.
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
function Name | String | تابعی که هنگام فعال شدن تریگر فراخوانی میشود. میتوانید از توابع موجود در کتابخانههای موجود، مانند Library.libFunction1 ، استفاده کنید. |
بازگشت
Trigger Builder - شیئی که برای ادامهی فرآیند ساخت ماشه استفاده میشود.
مجوز
اسکریپتهایی که از این روش استفاده میکنند، نیاز به مجوز با یک یا چند مورد از حوزههای زیر دارند:
-
https://www.googleapis.com/auth/script.scriptapp
require All Scopes(authMode)
تأیید میکند که آیا کاربر برای همهٔ حوزههای درخواستی اسکریپت، رضایت داده است یا خیر. اگر جریان اجرا به همهٔ حوزههای درخواستی اسکریپت وابسته است، از این متد استفاده کنید. اگر هر یک از رضایتنامهها از دست رفته باشد، این متد اجرای فعلی را پایان میدهد و یک اعلان مجوز برای درخواست رضایتنامههای از دست رفته نمایش میدهد.
این روش فقط زمانی کار میکند که کاربران اسکریپت را از سطحی که از رضایت جزئی پشتیبانی میکند، مثلاً از درون Apps Script IDE، اجرا کنند. وقتی اسکریپت با رضایتهای از دست رفته از سطحی پشتیبانی نشده، مانند افزونهی Google Workspace، اجرا شود، اسکریپت در ابتدای اجرا یک اعلان مجوز برای درخواست همه حوزهها ارائه میدهد.
ScriptApp .requireAllScopes(ScriptApp.AuthMode.FULL);
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
auth Mode | Auth Mode | حالت مجوزدهی که برای آن محدودههای اسکریپت باید ارزیابی شوند، تقریباً در همه موارد، مقدار auth Mode باید Script App.AuthMode.FULL باشد، زیرا هیچ حالت مجوزدهی دیگری نیازی به اعطای مجوز توسط کاربران ندارد. |
require Scopes(authMode, oAuthScopes)
تأیید میکند که آیا کاربر برای محدودههای درخواستی رضایت داده است یا خیر. اگر جریان اجرا به یک یا چند سرویس متکی باشد، از این متد استفاده کنید. اگر هر یک از رضایتهای مشخصشده وجود نداشته باشد، این متد اجرای فعلی را پایان میدهد و یک اعلان مجوز برای درخواست رضایتهای از دست رفته نمایش میدهد. محدودههایی که نامعتبر هستند یا توسط اسکریپت مورد نیاز نیستند، منجر به خطا میشوند.
این روش فقط زمانی کار میکند که کاربران اسکریپت را از سطحی که از رضایت جزئی پشتیبانی میکند، مثلاً از درون Apps Script IDE، اجرا کنند. وقتی اسکریپت با رضایتهای از دست رفته از سطحی پشتیبانی نشده، مانند افزونهی Google Workspace، اجرا شود، اسکریپت در ابتدای اجرا یک اعلان مجوز برای درخواست همه حوزهها ارائه میدهد.
ScriptApp .requireScopes(ScriptApp.AuthMode.FULL, [ 'https://www.googleapis.com/auth/documents', 'https://www.googleapis.com/auth/presentations', ]);
پارامترها
| نام | نوع | توضیحات |
|---|---|---|
auth Mode | Auth Mode | حالت مجوزدهی که دامنههای درخواستی برای آن نیاز به ارزیابی دارند، تقریباً در همه موارد، مقدار auth Mode باید Script App.AuthMode.FULL باشد، زیرا هیچ حالت مجوزدهی دیگری نیازی به اعطای مجوز توسط کاربران ندارد. |
oAuthScopes | String[] | محدودههای OAuth که برای تکمیل جریان اجرای داده شده مورد نیاز هستند. |