Google Apps Script มีบริการในตัวมากกว่า 30 รายการสำหรับการโต้ตอบกับข้อมูลผู้ใช้ ระบบอื่นๆ ของ Google และระบบภายนอก บริการเหล่านี้มีให้บริการเป็นออบเจ็กต์ส่วนกลางซึ่งคล้ายกับออบเจ็กต์ Math
มาตรฐานของ JavaScript ตัวอย่างเช่น เช่นเดียวกับที่ Math
มีเมธอดอย่าง random()
และค่าคงที่อย่าง PI
บริการสเปรดชีตของ Apps Script ก็มีเมธอดอย่าง openById(id)
, คลาส (ออบเจ็กต์ย่อย) อย่าง Range
และลิสต์แบบจำกัด (enum) อย่าง DataValidationCriteria
เอกสารอ้างอิงสำหรับบริการที่ควบคุม ผลิตภัณฑ์จะรวบรวมไว้ในส่วน " บริการ" ใต้ส่วนหัว "ข้อมูลอ้างอิง" ในแถบด้านข้างของเว็บไซต์นี้ ระบบจะรวบรวมบริการยูทิลิตี (สําหรับการสร้างอินเทอร์เฟซผู้ใช้ การแยกวิเคราะห์ XML หรือการเขียนข้อมูลบันทึก) ไว้ในส่วน "บริการสคริปต์"
ฟีเจอร์ JavaScript ที่ทันสมัย
Apps Script รองรับรันไทม์ JavaScript 2 แบบ ได้แก่ รันไทม์ V8 สมัยใหม่และรันไทม์รุ่นเก่าที่ขับเคลื่อนโดยโปรแกรมตีความ JavaScript ของ Rhino จาก Mozilla
รันไทม์ V8 รองรับไวยากรณ์และฟีเจอร์ ECMAScript สมัยใหม่ รันไทม์ Rhino อิงตามมาตรฐาน JavaScript 1.6 เวอร์ชันเก่า รวมถึงฟีเจอร์บางอย่างจาก 1.7 และ 1.8 คุณเลือกรันไทม์ที่จะใช้กับสคริปต์ได้อย่างอิสระ แต่เราขอแนะนําอย่างยิ่งให้ใช้รันไทม์ V8
รันไทม์แต่ละรายการรองรับคลาสและออบเจ็กต์ JavaScript ที่พร้อมใช้งานสำหรับสคริปต์ของคุณ นอกเหนือจากบริการขั้นสูงของ Google และรันไทม์ในตัว สคริปต์สามารถใช้ออบเจ็กต์ทั่วไป เช่น Array
, Date
, RegExp
, และอื่นๆ รวมถึงออบเจ็กต์ส่วนกลาง Math
และ Object
การใช้การเติมข้อความอัตโนมัติ
เครื่องมือแก้ไขสคริปต์มีฟีเจอร์ "ความช่วยเหลือด้านเนื้อหา" หรือที่เรียกกันโดยทั่วไปว่า "เติมข้อความอัตโนมัติ" ซึ่งจะแสดงออบเจ็กต์ส่วนกลาง รวมถึงเมธอดและลิสต์แบบจำกัดที่ใช้ได้ในบริบทปัจจุบันของสคริปต์ คำแนะนำในการเติมข้อความอัตโนมัติจะปรากฏขึ้นโดยอัตโนมัติทุกครั้งที่คุณพิมพ์เครื่องหมายจุดต่อจากออบเจ็กต์ส่วนกลาง อาร์เรย์แบบจำกัด หรือการเรียกใช้เมธอดที่แสดงผลคลาส Apps Script เช่น
- หากคุณพิมพ์ชื่อเต็มของออบเจ็กต์ส่วนกลางหรือเลือกจากฟีเจอร์เติมข้อความอัตโนมัติ แล้วพิมพ์
.
(เครื่องหมายจุด) คุณจะเห็นเมธอดและลิสต์ทั้งหมดของคลาสนั้น - หากพิมพ์อักขระ 2-3 ตัว คุณจะเห็นคำแนะนำที่ถูกต้องทั้งหมดที่ขึ้นต้นด้วยอักขระเหล่านั้น
ทำความเข้าใจออบเจ็กต์ส่วนกลาง
บริการแต่ละรายการจะมีออบเจ็กต์ส่วนกลาง (ระดับบนสุด) อย่างน้อย 1 รายการ เช่น บริการ Gmail จะเข้าถึงได้จากออบเจ็กต์ GmailApp
เท่านั้น บริการบางอย่างมีออบเจ็กต์ส่วนกลางหลายรายการ เช่น บริการพื้นฐานมีออบเจ็กต์ส่วนกลาง 4 รายการ ได้แก่ 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 อื่น คุณสามารถต่อสายเรียกเมธอดในบรรทัดเดียวได้ (ประเภทผลลัพธ์จะแสดงทั้งในฟีเจอร์เติมข้อความอัตโนมัติและในเอกสารอ้างอิงสำหรับเมธอด) ตัวอย่างเช่น เมธอด DocumentApp.create()
จะแสดงผล Document
ดังนั้นโค้ด 2 ส่วนต่อไปนี้จึงมีความหมายเหมือนกัน
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.');
การเข้าถึงชั้นเรียนย่อย
ทุกบริการประกอบด้วยคลาสย่อยอย่างน้อย 1 คลาสที่เข้าถึงได้จากระดับบนสุดไม่ได้ เช่นเดียวกับออบเจ็กต์ส่วนกลาง คุณไม่สามารถใช้คีย์เวิร์ด new
เพื่อสร้างคลาสเหล่านี้ได้ เช่นเดียวกับคลาส JavaScript มาตรฐาน เช่น Date
คุณจะเข้าถึงคลาสย่อยได้โดยการเรียกใช้เมธอดที่แสดงผลคลาสนั้นเท่านั้น หากไม่แน่ใจว่าจะเข้าถึงคลาสใด ให้ไปที่หน้ารูทของเอกสารอ้างอิงบริการ แล้วมองหาเมธอดที่แสดงผลคลาสที่ต้องการ
การจัดการกับอินเทอร์เฟซ
บริการบางรายการมีคลาสพิเศษที่ติดป้ายกำกับว่า "อินเทอร์เฟซ" ในเอกสารอ้างอิง คลาสเหล่านี้เป็นคลาสทั่วไปที่ใช้เป็นประเภทผลลัพธ์สำหรับเมธอดที่ไม่สามารถระบุประเภทที่แน่นอนล่วงหน้าได้ เช่น เมธอด Document service Body.getChild(childIndex)
จะแสดงผลออบเจ็กต์ Element
ทั่วไป
Element
คืออินเทอร์เฟซที่แสดงถึงคลาสอื่น ซึ่งอาจเป็น Paragraph
หรือ Table
ออบเจ็กต์อินเทอร์เฟซไม่ค่อยมีประโยชน์เมื่อใช้เพียงอย่างเดียว แต่คุณมักจะต้องการเรียกเมธอดอย่าง Element.asParagraph()
เพื่อแคสต์ออบเจ็กต์กลับไปยังคลาสที่เฉพาะเจาะจง
การทำงานกับ Enum
บริการส่วนใหญ่มีค่าที่มีชื่อแบบ Enum (ประเภทที่ระบุรายการ) อยู่ 2-3 รายการ ตัวอย่างเช่น บริการไดรฟ์ใช้ 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 users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);