API ภายนอก

Google Apps Script สามารถโต้ตอบกับ 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.