اسکریپت Google Apps بیش از 30 سرویس داخلی برای تعامل با دادههای کاربر، سایر سیستمهای گوگل و سیستمهای خارجی ارائه میدهد. این سرویسها به عنوان اشیاء سراسری مشابه شیء استاندارد Math در جاوا اسکریپت ارائه میشوند. برای مثال، همانطور که Math متدهایی مانند random() و ثابتهایی مانند PI را ارائه میدهد، سرویس Spreadsheet در اسکریپت Apps متدهایی مانند openById(id) ، کلاسها (اشیاء فرزند) مانند Range و enumهایی مانند DataValidationCriteria را ارائه میدهد.
مستندات مرجع برای سرویسهایی که محصولات Google Workspace را کنترل میکنند، در بخش «خدمات Google Workspace» در زیر سربرگ «مرجع» در نوار کناری این سایت جمعآوری شدهاند. سرویسهای کاربردی (برای مواردی مانند ایجاد رابطهای کاربری، تجزیه XML یا نوشتن دادههای گزارش) در بخش «خدمات اسکریپت» جمعآوری شدهاند.
ویژگیهای مدرن جاوا اسکریپت
Apps Script از دو زمان اجرای جاوا اسکریپت پشتیبانی میکند: زمان اجرای مدرن V8 و یک زمان اجرای قدیمیتر که توسط مفسر جاوا اسکریپت Rhino موزیلا پشتیبانی میشود.
محیط اجرایی V8 از سینتکس و ویژگیهای مدرن ECMAScript پشتیبانی میکند. محیط اجرایی Rhino بر اساس استاندارد قدیمیتر جاوا اسکریپت ۱.۶ به علاوه چند ویژگی از نسخههای ۱.۷ و ۱.۸ ساخته شده است. شما میتوانید آزادانه انتخاب کنید که از کدام محیط اجرایی برای اسکریپت خود استفاده کنید، اما محیط اجرایی V8 اکیداً توصیه میشود.
هر زمان اجرا علاوه بر سرویسهای داخلی و پیشرفته گوگل، از کلاسها و اشیاء جاوا اسکریپت که در اسکریپت شما در دسترس هستند نیز پشتیبانی میکند. اسکریپتهای شما میتوانند از اشیاء رایج مانند Array ، Date ، RegExp و غیره و همچنین اشیاء سراسری Math و Object استفاده کنند.
استفاده از تکمیل خودکار
ویرایشگر اسکریپت یک ویژگی «کمک به محتوا» ارائه میدهد که معمولاً «تکمیل خودکار» نامیده میشود و اشیاء سراسری و همچنین متدها و enumهایی را که در متن فعلی اسکریپت معتبر هستند، نشان میدهد. پیشنهادات تکمیل خودکار هر زمان که یک نقطه بعد از فراخوانی یک شیء سراسری، enum یا متد که یک کلاس Apps Script را برمیگرداند، تایپ کنید، به طور خودکار ظاهر میشوند. به عنوان مثال:
- اگر نام کامل یک شیء سراسری را تایپ کنید یا یکی را از حالت تکمیل خودکار انتخاب کنید، سپس
.(یک نقطه) را تایپ کنید، تمام متدها و enumهای آن کلاس را مشاهده خواهید کرد. - اگر چند کاراکتر تایپ کنید، تمام پیشنهادهای معتبری که با آن کاراکترها شروع میشوند را مشاهده خواهید کرد.
درک اشیاء سراسری
هر سرویس حداقل یک شیء سراسری (سطح بالا) ارائه میدهد؛ برای مثال، سرویس Gmail صرفاً از طریق شیء GmailApp قابل دسترسی است. برخی سرویسها چندین شیء سراسری ارائه میدهند؛ برای مثال، سرویس Base شامل چهار شیء سراسری است: Browser ، Logger ، MimeType و Session .
روشهای فراخوانی
اشیاء سراسری تقریباً تمام سرویسهای داخلی یا پیشرفته شامل متدهایی هستند که دادهها یا یک کلاس Apps Script را برمیگردانند. اسکریپتها فراخوانی متدها را به این شکل انجام میدهند:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
برای مثال، یک اسکریپت میتواند با فراخوانی متد sendEmail(recipient, subject, body) از سرویس Gmail، ایمیلی را به صورت زیر ارسال کند:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
اگر یک متد، کلاس Apps Script دیگری را برمیگرداند، میتوانید فراخوانیهای متد را در یک خط به صورت زنجیرهای انجام دهید. (انواع مقادیر برگشتی هم در autocomplete و هم در مستندات مرجع متد نشان داده شدهاند.) برای مثال، متد DocumentApp.create() یک Document برمیگرداند؛ بنابراین، دو بخش کد زیر معادل هستند:
var doc = DocumentApp.create('New document');
var body = doc.getTab('t.0').asDocumentTab().getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getTab('t.0').asDocumentTab().getBody()
.appendParagraph('New paragraph.');
دسترسی به کلاسهای فرزند
هر سرویس شامل یک یا چند کلاس فرزند است که نمیتوان از سطح بالا به آنها مانند یک شیء سراسری دسترسی داشت. شما نمیتوانید از کلمه کلیدی new برای ساخت این کلاسها استفاده کنید، همانطور که در کلاسهای استاندارد جاوا اسکریپت مانند Date میتوانید؛ شما فقط میتوانید با فراخوانی متدی که آن را برمیگرداند به یک کلاس فرزند دسترسی پیدا کنید. اگر مطمئن نیستید که چگونه به یک کلاس خاص دسترسی پیدا کنید، برای مشاهده مستندات مرجع سرویس، به صفحه اصلی مراجعه کنید و به دنبال متدی باشید که کلاس مورد نظر شما را برمیگرداند.
کار با رابطها
تعداد انگشتشماری از سرویسها شامل کلاسهای ویژهای هستند که در مستندات مرجع با عنوان "رابط" نامگذاری شدهاند. اینها کلاسهای عمومی هستند که به عنوان انواع بازگشتی برای متدهایی استفاده میشوند که نمیتوانند نوع دقیق را از قبل تعیین کنند. به عنوان مثال، متد سرویس Document به نام Body.getChild(childIndex) یک شیء عمومی Element را برمیگرداند. Element یک رابط است که نشاندهنده کلاس دیگری، احتمالاً یک Paragraph یا Table ، است. اشیاء رابط به ندرت به خودی خود مفید هستند. در عوض، معمولاً میخواهید متدی مانند Element.asParagraph() را برای تبدیل شیء به یک کلاس دقیق فراخوانی کنید.
کار با enumها
اکثر سرویسها شامل چند enum (انواع شمارشی) از مقادیر نامگذاری شده هستند. به عنوان مثال، سرویس Drive از enumهای Access و Permission برای تعیین اینکه کدام کاربران به یک فایل یا پوشه دسترسی دارند استفاده میکند. تقریباً در همه موارد، شما از طریق شیء سراسری به این enumها دسترسی پیدا میکنید. به عنوان مثال، فراخوانی متد Folder.setSharing(accessType, permissionType) به این صورت است:
// Creates a folder that anyone on the Internet can read from and write to. (Domain administrators can
// prohibit this setting for Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);