บริการขั้นสูงใน Google Apps Script ช่วยให้คุณเชื่อมต่อกับ Google API สาธารณะบางอย่างได้โดยไม่ต้องตั้งค่ามากเท่ากับการใช้อินเทอร์เฟซ HTTP บริการขั้นสูง เป็น Wrapper แบบบางสำหรับ Google API เหล่านั้น โดยจะทำงานคล้ายกับบริการในตัวของ Apps Script เช่น มีฟีเจอร์เติมข้อความอัตโนมัติ และ Apps Script จะจัดการขั้นตอนการให้สิทธิ์โดยอัตโนมัติ เปิดใช้บริการขั้นสูงก่อน ใช้ในสคริปต์
เปิดใช้บริการขั้นสูง
หากต้องการใช้บริการขั้นสูงของ Google ให้ทำตามวิธีการต่อไปนี้
ขั้นตอนที่ 1: เปิดใช้บริการขั้นสูง
เปิดใช้บริการขั้นสูงโดยใช้เครื่องมือแก้ไข Apps Script หรือโดย การแก้ไขไฟล์ Manifest
วิธีที่ 1: ใช้เครื่องมือแก้ไข
- เปิดโปรเจ็กต์ Apps Script
- คลิกโปรแกรมตัดต่อ ทางด้านซ้าย
- ทางด้านซ้าย ให้คลิกเพิ่มบริการ ข้างบริการ
- เลือกบริการขั้นสูงของ Google แล้วคลิกเพิ่ม
วิธีที่ 2: การใช้ไฟล์ Manifest
เปิดใช้บริการขั้นสูงโดยแก้ไขไฟล์ Manifest เช่น หากต้องการเปิดใช้
บริการขั้นสูงของ Google ไดรฟ์ ให้เพิ่มฟิลด์ enabledAdvancedServices ลงในออบเจ็กต์
dependencies
{
"timeZone": "America/Denver",
"dependencies": {
"enabledAdvancedServices": [
{
"userSymbol": "Drive",
"version": "v3",
"serviceId": "drive"
}
]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
หลังจากเปิดใช้บริการขั้นสูงแล้ว บริการดังกล่าวจะพร้อมใช้งานในการเติมข้อความอัตโนมัติ
ขั้นตอนที่ 2: เปิดใช้ Google Cloud API (โปรเจ็กต์ Google Cloud มาตรฐานเท่านั้น)
หากใช้โปรเจ็กต์ Google Cloud เริ่มต้น (สร้างโดย Apps Script โดยอัตโนมัติ) ให้ข้ามขั้นตอนนี้ ระบบจะเปิดใช้ API โดยอัตโนมัติเมื่อคุณเพิ่มบริการในขั้นตอนที่ 1
หากใช้โปรเจ็กต์ Google Cloud มาตรฐาน ให้เปิดใช้ API ที่สอดคล้องกับบริการขั้นสูงด้วยตนเอง หากต้องการ เปิดใช้ API ด้วยตนเอง ให้ทำดังนี้
เปิดโปรเจ็กต์ระบบคลาวด์ที่เชื่อมโยงกับสคริปต์ใน** คอนโซล Google Cloud**
ที่ด้านบนของคอนโซล ให้คลิกแถบค้นหาแล้วพิมพ์ส่วนหนึ่งของชื่อ API (เช่น "ปฏิทิน") จากนั้นคลิกชื่อเมื่อเห็น
คลิกเปิดใช้ API
ปิด Google Cloud Console แล้วกลับไปที่โปรแกรมแก้ไขสคริปต์
วิธีกำหนดลายเซ็นของเมธอด
โดยทั่วไปแล้ว บริการขั้นสูงจะใช้ออบเจ็กต์ ชื่อเมธอด และพารามิเตอร์เดียวกันกับ API สาธารณะที่เกี่ยวข้อง แม้ว่าจะมีการแปลลายเซ็นของเมธอดเพื่อใช้ใน Apps Script ก็ตาม ฟังก์ชันเติมข้อความอัตโนมัติ ของเครื่องมือแก้ไขสคริปต์มักจะให้ข้อมูล เพียงพอต่อการเริ่มต้นใช้งาน กฎต่อไปนี้จะอธิบายวิธีที่ Apps Script สร้างลายเซ็นของเมธอดจาก Google API สาธารณะ
คำขอไปยัง Google API สามารถยอมรับข้อมูลประเภทต่างๆ ได้ รวมถึงพารามิเตอร์เส้นทาง พารามิเตอร์การค้นหา เนื้อหาคำขอ หรือไฟล์แนบสำหรับการอัปโหลดสื่อ บริการขั้นสูงบางอย่างยังยอมรับส่วนหัวคำขอ HTTP ที่เฉพาะเจาะจงได้ด้วย (เช่น บริการขั้นสูงของปฏิทิน)
ลายเซ็นของเมธอดที่เกี่ยวข้องใน Apps Script มีอาร์กิวเมนต์ต่อไปนี้
- เนื้อความของคำขอ (โดยปกติคือทรัพยากร) เป็นออบเจ็กต์ JavaScript
- เส้นทางหรือพารามิเตอร์ที่จำเป็นเป็นอาร์กิวเมนต์แต่ละรายการ หากเมธอดต้องใช้พารามิเตอร์เส้นทางหลายรายการ พารามิเตอร์เหล่านั้นจะปรากฏตามลำดับที่แสดงใน URL ของปลายทาง API
- ไฟล์แนบสำหรับการอัปโหลดสื่อเป็นอาร์กิวเมนต์
Blob - พารามิเตอร์ที่ไม่บังคับ (โดยปกติคือพารามิเตอร์การค้นหา) เป็นออบเจ็กต์ JavaScript ที่แมปชื่อพารามิเตอร์กับค่า
- ส่วนหัวคำขอ HTTP เป็นส่วนหัวการแมปออบเจ็กต์ JavaScript กับชื่อส่วนหัวไปยังค่าส่วนหัว
หากวิธีการไม่มีสินค้าในหมวดหมู่ที่กำหนด ระบบจะละเว้นส่วนนั้นของลายเซ็น
โปรดทราบถึงข้อยกเว้นต่อไปนี้
- สำหรับวิธีการที่ยอมรับการอัปโหลดสื่อ ระบบจะตั้งค่าพารามิเตอร์
uploadTypeโดยอัตโนมัติ - เมธอดที่ชื่อ
deleteใน Google API จะชื่อremoveใน Apps Script เนื่องจากdeleteเป็นคำที่สงวนไว้ใน JavaScript - หากกำหนดค่าบริการขั้นสูงให้ยอมรับส่วนหัวของคำขอ HTTP และคุณตั้งค่าออบเจ็กต์ JavaScript ของส่วนหัวของคำขอ คุณจะต้องตั้งค่าออบเจ็กต์ JavaScript ของพารามิเตอร์ที่ไม่บังคับด้วย (ตั้งค่าเป็นออบเจ็กต์ว่างหากคุณไม่ได้ใช้พารามิเตอร์ที่ไม่บังคับ)
ตัวอย่าง: Calendar.Events.insert
วิธีสร้างกิจกรรมในปฏิทิน
เอกสารประกอบของ Google Calendar API จะแสดงโครงสร้างคำขอ HTTP ที่เกี่ยวข้อง
- คำกริยา HTTP:
POST - URL ของคำขอ:
https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events เนื้อหาคำขอ: ทรัพยากร Event
พารามิเตอร์การค้นหา:
sendUpdates,supportsAttachmentsฯลฯ
ใน Apps Script ลายเซ็นของเมธอดจะกำหนดโดยการจัดเรียงอินพุตต่อไปนี้ใหม่
- เนื้อหา: ทรัพยากรเหตุการณ์ (ออบเจ็กต์ JavaScript)
- เส้นทาง:
calendarId(สตริง) - พารามิเตอร์ที่ไม่บังคับ: พารามิเตอร์การค้นหา (ออบเจ็กต์ JavaScript)
การเรียกใช้เมธอดที่ได้จะมีลักษณะดังนี้
const event = {
summary: 'Lunch',
location: 'Deli',
start: {
dateTime: '2026-01-01T12:00:00-05:00'
},
end: {
dateTime: '2026-01-01T13:00:00-05:00'
}
};
const calendarId = 'primary';
const optionalArgs = {
sendUpdates: 'all'
};
Calendar.Events.insert(event, calendarId, optionalArgs);
บริการขั้นสูงหรือ HTTP
บริการขั้นสูงของ Google แต่ละรายการจะเชื่อมโยงกับ Google API สาธารณะ ใน Apps Script ให้เข้าถึง API เหล่านี้โดยใช้บริการขั้นสูงหรือ
โดยการส่งคำขอ API โดยตรงโดยใช้
UrlFetch
หากใช้วิธีบริการขั้นสูง Apps Script จะจัดการขั้นตอนการให้สิทธิ์และรองรับการเติมข้อความอัตโนมัติ เปิดใช้บริการขั้นสูงก่อนใช้งาน
หากคุณใช้เมธอด UrlFetch เพื่อเข้าถึง API โดยตรง คุณจะถือว่า Google API เป็นAPI ภายนอก เมื่อใช้
เมธอดนี้ ให้ใช้ทุกแง่มุมของ API อย่างไรก็ตาม คุณต้องจัดการการให้สิทธิ์ API
ตารางต่อไปนี้จะเปรียบเทียบ 2 วิธีดังกล่าว
| ฟีเจอร์ | บริการขั้นสูง | UrlFetch (HTTP) |
|---|---|---|
| การให้สิทธิ์ | จัดการโดยอัตโนมัติ | ต้องดำเนินการด้วยตนเอง |
| เติมข้อความอัตโนมัติ | ใช้งานได้ | ไม่พร้อมใช้งาน |
| ขอบเขตฟังก์ชันการทำงาน | อาจเป็นส่วนย่อยของ API | สิทธิ์เข้าถึงฟีเจอร์ API ทั้งหมดโดยสมบูรณ์ |
| ความซับซ้อน | ง่ายขึ้น | ซับซ้อนมากขึ้น (ต้องสร้างส่วนหัวและแยกวิเคราะห์การตอบกลับ) |
การเปรียบเทียบโค้ด
ตัวอย่างโค้ดแสดงความแตกต่างของความซับซ้อนระหว่างการสร้าง
กิจกรรมในปฏิทินโดยใช้บริการขั้นสูงเทียบกับการใช้
UrlFetchApp
บริการขั้นสูง:
const event = {
summary: 'Lunch',
location: 'Deli',
start: { dateTime: '2026-01-01T12:00:00-05:00' },
end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const optionalArgs = {
sendUpdates: 'all'
};
Calendar.Events.insert(event, 'primary', optionalArgs);
UrlFetch (HTTP):
const event = {
summary: 'Lunch',
location: 'Deli',
start: { dateTime: '2026-01-01T12:00:00-05:00' },
end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events?sendUpdates=all';
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
},
payload: JSON.stringify(event)
};
UrlFetchApp.fetch(url, options);
สำหรับวิธี UrlFetchApp ให้ระบุขอบเขต OAuth ที่จำเป็นด้วยตนเองในไฟล์
Manifest ของสคริปต์
ใช้บริการขั้นสูงทุกครั้งที่เป็นไปได้ และใช้วิธี
UrlFetch เฉพาะเมื่อบริการขั้นสูงไม่พร้อมใช้งานหรือไม่มีฟังก์ชันที่คุณต้องการ
การสนับสนุนสำหรับบริการขั้นสูง
เนื่องจากบริการขั้นสูงเป็นเพียงส่วนห่อหุ้มบางๆ รอบ Google APIs ปัญหาใดๆ ที่พบขณะใช้บริการเหล่านี้มักเป็นปัญหาเกี่ยวกับ API พื้นฐาน ไม่ใช่ Apps Script
หากพบปัญหาขณะใช้บริการขั้นสูง ให้รายงานปัญหาโดยใช้ วิธีการขอรับการสนับสนุนสำหรับ API ที่เกี่ยวข้อง