บริการในตัวของ Google

Google Apps Script มีบริการในตัวมากกว่า 30 รายการสำหรับการโต้ตอบกับข้อมูลผู้ใช้ ระบบอื่นๆ ของ Google และระบบภายนอก บริการเหล่านี้มีให้บริการเป็นออบเจ็กต์ส่วนกลางซึ่งคล้ายกับออบเจ็กต์ Math มาตรฐานของ JavaScript ตัวอย่างเช่น เช่นเดียวกับที่ Math มีเมธอดอย่าง random() และค่าคงที่อย่าง PI บริการสเปรดชีตของ Apps Script ก็มีเมธอดอย่าง openById(id), คลาส (ออบเจ็กต์ย่อย) อย่าง Range และลิสต์แบบจำกัด (enum) อย่าง DataValidationCriteria

เอกสารอ้างอิงสำหรับบริการที่ควบคุมGoogle Workspace ผลิตภัณฑ์จะรวบรวมไว้ในส่วน "Google Workspace บริการ" ใต้ส่วนหัว "ข้อมูลอ้างอิง" ในแถบด้านข้างของเว็บไซต์นี้ ระบบจะรวบรวมบริการยูทิลิตี (สําหรับการสร้างอินเทอร์เฟซผู้ใช้ การแยกวิเคราะห์ 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 Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);