외부 API

Google Apps Script는 웹 전체에 있는 API와 상호작용할 수 있습니다. 이 가이드에서는 스크립트에서 다양한 유형의 API로 작업하는 방법을 보여줍니다.

공개 API에 연결

UrlFetch 서비스를 사용하여 API 요청을 직접 실행할 수 있습니다.

다음 예에서는 GitHub API를 사용하여 'Apps Script'를 언급하는 별표가 100개 이상인 저장소를 검색합니다. 이 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 객체 작업은 JSON 객체를 파싱하거나 인코딩하는 것이 훨씬 더 쉽다는 점을 제외하면 XML 작업과 비슷합니다.

요청 중인 API가 요청에 대해 원시 JSON 응답을 반환하는 경우 HTTPResponse.getContentText() 메서드를 사용하여 JSON 문자열 응답에 액세스할 수 있습니다. 이 문자열을 가져온 후에는 문자열에서 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 응답을 반환하는 경우 HTTPResponse.getContentText() 메서드를 사용하여 XML 응답에 액세스할 수 있습니다.

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

API에 XML 요청을 할 때 XmlService 메서드를 사용하여 전송할 XML을 구성합니다.

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.