บริการขั้นสูงของ Google

บริการขั้นสูงใน Apps Script ช่วยให้คุณเชื่อมต่อกับ Google API สาธารณะบางรายการได้โดยไม่ต้องตั้งค่ามากเท่ากับการใช้อินเทอร์เฟซ HTTP บริการขั้นสูง เป็น Wrapper แบบบางรอบ Google API เหล่านั้น โดยจะทำงานคล้ายกับบริการในตัวของ Apps Script เช่น มีการเสนอการเติมข้อความอัตโนมัติ และ Apps Script จะจัดการขั้นตอนการให้สิทธิ์โดยอัตโนมัติ อย่างไรก็ตาม คุณต้องเปิดใช้บริการขั้นสูงก่อนจึงจะใช้บริการดังกล่าวในสคริปต์ได้

เปิดใช้บริการขั้นสูง

หากต้องการใช้บริการขั้นสูงของ Google ให้ทำตามวิธีการต่อไปนี้

ขั้นตอนที่ 1: เปิดใช้บริการขั้นสูง

คุณเปิดใช้บริการขั้นสูงได้โดยใช้เครื่องมือแก้ไข Apps Script หรือโดยการแก้ไขไฟล์ Manifest

วิธีที่ 1: ใช้เครื่องมือแก้ไข

  1. เปิดโปรเจ็กต์ Apps Script
  2. คลิกโปรแกรมตัดต่อ ทางด้านซ้าย
  3. ทางด้านซ้าย ให้คลิกเพิ่มบริการ ข้างบริการ
  4. เลือกบริการขั้นสูงของ 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 ด้วยตนเอง ให้ทำดังนี้

  1. เปิดโปรเจ็กต์ระบบคลาวด์ที่เชื่อมโยงกับสคริปต์ใน** คอนโซล Google Cloud**

  2. ที่ด้านบนของคอนโซล ให้คลิกแถบค้นหาแล้วพิมพ์ส่วนหนึ่งของชื่อ API (เช่น "ปฏิทิน") จากนั้นคลิกชื่อเมื่อเห็น

  3. คลิกเปิดใช้ API

  4. ปิด Google Cloud Console แล้วกลับไปที่โปรแกรมแก้ไขสคริปต์

วิธีกำหนดลายเซ็นของเมธอด

โดยทั่วไปแล้ว บริการขั้นสูงจะใช้ออบเจ็กต์ ชื่อเมธอด และพารามิเตอร์เดียวกันกับ API สาธารณะที่เกี่ยวข้อง แม้ว่าจะมีการแปลลายเซ็นของเมธอดเพื่อใช้ใน Apps Script ก็ตาม โดยปกติฟังก์ชัน เติมข้อความอัตโนมัติของเครื่องมือแก้ไขสคริปต์จะให้ข้อมูลเพียงพอต่อการเริ่มต้นใช้งาน แต่กฎต่อไปนี้จะอธิบายวิธีที่ Apps Script สร้างลายเซ็นของเมธอดจาก Google API สาธารณะ

คำขอไปยัง Google API สามารถยอมรับข้อมูลประเภทต่างๆ ได้ รวมถึงพารามิเตอร์เส้นทาง พารามิเตอร์การค้นหา เนื้อหาคำขอ หรือไฟล์แนบสำหรับการอัปโหลดสื่อ บริการขั้นสูงบางอย่างยังยอมรับส่วนหัวคำขอ HTTP ที่เฉพาะเจาะจงได้ด้วย (เช่น บริการขั้นสูงของปฏิทิน)

ลายเซ็นของเมธอดที่เกี่ยวข้องใน Google Apps Script มีอาร์กิวเมนต์ต่อไปนี้

  1. เนื้อความของคำขอ (โดยปกติคือทรัพยากร) เป็นออบเจ็กต์ JavaScript
  2. เส้นทางหรือพารามิเตอร์ที่จำเป็นเป็นอาร์กิวเมนต์แต่ละรายการ หากเมธอดต้องใช้ พารามิเตอร์เส้นทางหลายรายการ พารามิเตอร์เหล่านั้นจะปรากฏตามลำดับที่แสดงใน URL ของปลายทาง API
  3. ไฟล์แนบการอัปโหลดสื่อเป็นอาร์กิวเมนต์ Blob
  4. พารามิเตอร์ที่ไม่บังคับ (โดยปกติคือพารามิเตอร์การค้นหา) เป็นออบเจ็กต์ JavaScript ที่แมปชื่อพารามิเตอร์กับค่า
  5. ส่วนหัวคำขอ 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 ลายเซ็นของเมธอดจะกำหนดโดยการจัดเรียงอินพุตต่อไปนี้ใหม่

  1. เนื้อหา: ทรัพยากรเหตุการณ์ (ออบเจ็กต์ JavaScript)
  2. เส้นทาง: calendarId (สตริง)
  3. พารามิเตอร์ที่ไม่บังคับ: พารามิเตอร์การค้นหา (ออบเจ็กต์ 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 พื้นฐาน