Google Apps Komut Dosyası, web'in her yerindeki API'lerle etkileşim kurabilir. Bu kılavuzda, komut dosyalarınızda farklı API türleriyle nasıl çalışacağınız gösterilmektedir.
Herkese açık API'lere bağlanma
API isteklerini doğrudan yapmak için UrlFetch
hizmetini kullanabilirsiniz.
Aşağıdaki örnekte, "Apps Komut Dosyası"ndan bahseden ve 100 veya daha fazla yıldız alan depoları aramak için GitHub API kullanılmaktadır. Bu API isteği için yetkilendirme veya API anahtarı gerekmez.
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 ile hizmetlere istek gönderme
Kullanıcı adına hareket eden API'ler genellikle OAuth protokolü kullanılarak yetkilendirme gerektirir. Apps Komut Dosyası, protokol için yerleşik destek sağlamaz ancak OAuth akışını gerçekleştirmek ve kimlik bilgilerini isteklerinizle birlikte göndermek için kullanabileceğiniz açık kaynak kitaplıklar vardır:
- Apps Script için OAuth1: OAuth 1.0 ve 1.0a ile uyumludur.
- Apps Script için OAuth2: OAuth2 ile uyumludur.
JSON ile çalışma
JSON nesneleriyle çalışmak, XML ile çalışmaya benzer. Tek fark, JSON nesnelerinin ayrıştırılması veya kodlanmasının çok daha kolay olmasıdır.
İstenen API, bir istek için ham JSON yanıtı döndürüyorsa JSON dize yanıtına HTTPResponse.getContentText()
yöntemi kullanılarak erişilebilir.
Bu dize alındıktan sonra, yerel nesne temsili almak için dize üzerinde JSON.parse()
işlevini çağırmanız yeterlidir.
// Make request to API and get response before this point.
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data.title);
Benzer şekilde, istek göndermek için bir JavaScript nesnesinin dize temsilini oluşturmak üzere JSON.stringify()
kullanın.
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 ayrıştırma
Harici bir API, bir istek için ham XML yanıtı döndürürse HTTPResponse.getContentText()
yöntemini kullanarak XML yanıtına erişebilirsiniz.
// Make request to API and get response before this point.
var xml = response.getContentText();
var doc = XmlService.parse(xml);
Bir API'ye XML isteği gönderirken XmlService
yöntemlerini kullanarak gönderilecek XML'i oluşturun.
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.