API ภายนอก

สคริปต์ของ Google Apps สามารถโต้ตอบกับ API จากทั่วทั้งเว็บ คู่มือนี้จะแสดงวิธีใช้ API ประเภทต่างๆ ในสคริปต์

เชื่อมต่อกับ API สาธารณะ

คุณใช้บริการ UrlFetch เพื่อส่งคําขอ API ได้โดยตรง

ตัวอย่างต่อไปนี้ใช้ GitHub API เพื่อค้นหาที่เก็บที่มีดาว 100 ดวงขึ้นไปซึ่งพูดถึง "Apps Script" คำขอ API นี้ไม่จําเป็นต้องให้สิทธิ์หรือใช้คีย์ API

var query = '"Apps Script" stars:">=100"';
var url = 'https://api.github.com/search/repositories'
  + '?sort=stars'
  + '&q=' + encodeURIComponent(query);

var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
Logger.log(response);

ส่งคําขอไปยังบริการด้วย OAuth

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

ทำงานกับ JSON

การทำงานกับออบเจ็กต์ JSON คล้ายกับการทํางานกับ XML เว้นแต่ว่าการแยกวิเคราะห์หรือเข้ารหัสออบเจ็กต์ JSON จะง่ายกว่ามาก

หาก API ที่ขอแสดงผล JSON ดิบสําหรับคําขอ คุณจะเข้าถึงการตอบกลับสตริง JSON ได้โดยใช้เมธอด HTTPResponse.getContentText() เมื่อดึงสตริงนี้แล้ว ให้เรียก JSON.parse() บนสตริงเพื่อรับการแสดงออบเจ็กต์เนทีฟ

// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data.title);

ในทํานองเดียวกัน หากต้องการสร้างการนําเสนอสตริงของออบเจ็กต์ JavaScript เพื่อส่งคําขอ ให้ใช้ JSON.stringify()

var data = {
  'entry': {
    'group': {
      'title': 'Dog Skateboarding',
      'description': 'My dog gets some serious air'
    },
    'keywords': 'dog, skateboard'
  }
}
var payload = JSON.stringify(data);
// Make request to API with payload after this point.

แยกวิเคราะห์ XML

หาก API ภายนอกแสดงผลลัพธ์ XML ดิบสําหรับคําขอ คุณจะเข้าถึงคําตอบ XML ได้โดยใช้เมธอด HTTPResponse.getContentText()

// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);

เมื่อส่งคำขอ XML ไปยัง API ให้สร้าง XML เพื่อส่งโดยใช้เมธอด XmlService

var root = XmlService.createElement('entry')
    .setAttribute('keywords', 'dog, skateboard');
var group = XmlService.createElement('group')
    .setAttribute('title', 'Dog Skateboarding');
    .setAttribute('description', 'My dog gets some serious air');
root.addContent(group);
var document = XmlService.createDocument(root);
var payload = XmlService.getPrettyFormat().format(document);
// Make request to API with payload after this point.