خدمات داخلی گوگل

Google Apps Script بیش از 30 سرویس داخلی را برای تعامل با داده های کاربر، سایر سیستم های Google و سیستم های خارجی ارائه می دهد. این خدمات به عنوان اشیاء جهانی مشابه شیء استاندارد Math جاوا اسکریپت ارائه می شوند. به عنوان مثال، همانطور که Math متدهایی مانند random() و ثابت هایی مانند PI را ارائه می دهد، سرویس Apps Script Spreadsheet روش هایی مانند openById(id) ، کلاس ها (اشیاء فرزند) مانند Range و enum هایی مانند DataValidationCriteria را ارائه می دهد.

اسناد مرجع خدماتی که محصولاتGoogle Workspace را کنترل می کنند در بخش "خدماتGoogle Workspace " در زیر عنوان "مرجع" در نوار کناری این سایت جمع آوری شده است. خدمات ابزار (برای مواردی مانند ایجاد رابط کاربری، تجزیه XML یا نوشتن داده‌های گزارش) در بخش «خدمات اسکریپت» جمع‌آوری می‌شوند.

ویژگی های جاوا اسکریپت مدرن

Apps Script از دو زمان اجرا جاوا اسکریپت پشتیبانی می کند: زمان اجرا V8 مدرن و یک نسخه قدیمی تر که توسط مفسر جاوا اسکریپت Rhino Mozilla طراحی شده است.

زمان اجرا V8 از نحو و ویژگی های مدرن ECMAScript پشتیبانی می کند. زمان اجرا Rhino بر اساس استاندارد قدیمی جاوا اسکریپت 1.6 به اضافه چند ویژگی از 1.7 و 1.8 است. شما می توانید آزادانه انتخاب کنید که از کدام زمان اجرا با اسکریپت خود استفاده کنید، اما زمان اجرا V8 به شدت توصیه می شود.

هر زمان اجرا از کلاس‌ها و اشیاء جاوا اسکریپت پشتیبانی می‌کند که علاوه بر سرویس‌های داخلی و پیشرفته Google برای اسکریپت شما در دسترس هستند. اسکریپت‌های شما می‌توانند از اشیاء معمولی مانند Array ، Date ، RegExp و غیره و همچنین شی‌های سراسری Math و Object استفاده کنند.

با استفاده از تکمیل خودکار

ویرایشگر اسکریپت یک ویژگی «کمک محتوا» را ارائه می‌کند که معمولاً «تکمیل خودکار» نامیده می‌شود، که اشیاء سراسری و همچنین روش‌ها و فهرست‌هایی را که در زمینه فعلی اسکریپت معتبر هستند را نشان می‌دهد. هر زمان که نقطه ای را بعد از یک شی سراسری، enum یا فراخوانی روشی که کلاس Apps Script را برمی گرداند، تایپ می کنید، پیشنهادات تکمیل خودکار به طور خودکار ظاهر می شوند. مثلا:

  • اگر نام کامل یک شی سراسری را تایپ کردید یا یکی را از تکمیل خودکار انتخاب کردید، سپس تایپ کنید . (یک نقطه)، تمام متدها و شماره های آن کلاس را خواهید دید.
  • اگر چند نویسه را تایپ کنید، همه پیشنهادات معتبری را که با آن نویسه ها شروع می شود، مشاهده خواهید کرد.

درک اشیاء جهانی

هر سرویس حداقل یک شیء جهانی (سطح بالا) را ارائه می دهد. به عنوان مثال، سرویس Gmail فقط از شی GmailApp قابل دسترسی است. برخی از خدمات چندین شیء جهانی را ارائه می دهند. برای مثال، سرویس Base شامل چهار شیء سراسری است: Browser ، Logger ، MimeType و Session .

روش های فراخوانی

اشیاء جهانی تقریباً همه سرویس‌های داخلی یا پیشرفته شامل روش‌هایی هستند که داده‌ها یا کلاس Apps Script را برمی‌گردانند. اسکریپت ها فراخوانی متد را در این قالب انجام می دهند:

GlobalObjectName.methodName(argument1, argument2, ..., argumentN);

به عنوان مثال، یک اسکریپت می‌تواند با فراخوانی روش sendEmail(recipient, subject, body) سرویس جی‌میل ایمیل ارسال کند:

GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');

اگر متدی یک کلاس Apps Script دیگر را برمی گرداند، می توانید فراخوانی های متد را در یک خط زنجیره بزنید. (انواع بازگشتی هم در تکمیل خودکار و هم در مستندات مرجع یک متد نشان داده می شوند.) برای مثال، متد DocumentApp.create() یک Document را برمی گرداند. بنابراین، دو بخش کد زیر معادل هستند:

var doc = DocumentApp.create('New document');
var body = doc.getBody();
body.appendParagraph('New paragraph.');

// Same result as above.
DocumentApp.create('New document').getBody().appendParagraph('New paragraph.');

دسترسی به کلاس های کودک

هر سرویس شامل یک یا چند کلاس فرزند است که نمی توان از سطح بالا به عنوان یک شی سراسری به آنها دسترسی داشت. شما نمی توانید از کلمه کلیدی new برای ساخت این کلاس ها استفاده کنید، همانطور که می توانید با کلاس های استاندارد جاوا اسکریپت مانند Date ; شما فقط با فراخوانی متدی که آن را برمی گرداند می توانید به کلاس فرزند دسترسی پیدا کنید. اگر مطمئن نیستید که چگونه به کلاس خاصی دسترسی داشته باشید، از صفحه اصلی برای مستندات مرجع سرویس دیدن کنید و به دنبال روشی باشید که کلاس مورد نظر شما را برمی گرداند.

برخورد با رابط ها

تعداد انگشت شماری از خدمات شامل کلاس های ویژه ای است که در مستندات مرجع به عنوان "رابط" برچسب گذاری شده اند. اینها کلاس های عمومی هستند که به عنوان انواع برگشتی برای روش هایی استفاده می شوند که نمی توانند نوع دقیق را از قبل تعیین کنند. به عنوان مثال، روش سرویس سند Body.getChild(childIndex) یک شی Element عمومی را برمی گرداند. Element رابطی است که کلاس دیگری را نشان می دهد، احتمالاً یک Paragraph یا Table . اشیاء رابط به ندرت به تنهایی مفید هستند. در عوض، معمولاً می خواهید متدی مانند Element.asParagraph() را فراخوانی کنید تا شی را به یک کلاس دقیق برگردانید.

کار با enums

بیشتر خدمات شامل چند عدد (انواع شمارش شده) از مقادیر نامگذاری شده است. به عنوان مثال، سرویس Drive از enums Access و Permission برای تعیین اینکه کدام کاربران به یک فایل یا پوشه دسترسی دارند، استفاده می کند. تقریباً در همه موارد، شما از شی سراسری به این فهرست ها دسترسی دارید. برای مثال، فراخوانی روش 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);