บริการขั้นสูงใน 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 ที่เฉพาะเจาะจงได้ด้วย (เช่น บริการขั้นสูงของปฏิทิน)
ลายเซ็นของเมธอดที่เกี่ยวข้องใน Google 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);
เราขอแนะนำให้ใช้บริการขั้นสูงทุกครั้งที่เป็นไปได้ และใช้เฉพาะวิธีUrlFetchเมื่อบริการขั้นสูงไม่พร้อมใช้งานหรือไม่มีฟังก์ชันการทำงานที่คุณต้องการ
การสนับสนุนสำหรับบริการขั้นสูง
เนื่องจากบริการขั้นสูงเป็นเพียงส่วนห่อหุ้มบางๆ รอบ Google APIs ปัญหาใดๆ ที่พบขณะใช้บริการขั้นสูงมักเป็นปัญหาเกี่ยวกับ API พื้นฐาน ไม่ใช่ Apps Script
หากพบปัญหาขณะใช้บริการขั้นสูง คุณควรรายงานปัญหาโดยใช้คำแนะนำในการสนับสนุนสำหรับ API พื้นฐาน