اسکریپت 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 استفاده کنند.
از آنجا که کد Apps Script روی سرورهای گوگل اجرا میشود (به استثنای صفحات سرویس HTML )، ویژگیهای جاوا اسکریپت مبتنی بر مرورگر مانند دستکاری DOM یا رابط برنامهنویسی کاربردی Window API) در Apps Script در دسترس نیستند.
تکمیل خودکار
ویرایشگر اسکریپت یک ویژگی «کمک به محتوا» ارائه میدهد که معمولاً «تکمیل خودکار» نامیده میشود و اشیاء سراسری و همچنین متدها و 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های Access و Permission برای تعیین اینکه کدام کاربران به یک فایل یا پوشه دسترسی دارند استفاده میکند. در بیشتر موارد، همانطور که در مثال زیر نشان داده شده است، به این enumها از شیء سراسری دسترسی پیدا میکنید:
// 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);