今回はGoogle Apps Script(GAS)から外部のWebAPIへアクセス方法について紹介したいと思います。
Contents
URL Fetch Service
GASではHTTPリクエストを叩くには「URL Fetch Service」を使用します。これはPythonでいうところの「requests」に相当するものになります。
関連記事:【Python】requestsを使ってWebサイトの情報をスクレイピングして自動収集する
もとの情報はGoogleの開発者サイトのリファレンス(G Suite Developer / URL Fetch Service )を参考にしています。
GETリクエストを行う場合
fetch関数にURLを渡します。下記のコードは、
# APIのURLにGETレスポンスを送る
function sendGetRequest() {
var response = UrlFetchApp.fetch("https://zipcloud.ibsnet.co.jp/api/search?zipcode=221-0866");
console.log(response.getContentText())
};
レスポンスの内容は変数responseに格納されます。
POSTリクエストを行う場合
APIのPOSTリクエストを送る場合は、optionsとしてfetch関数に渡します。
function sendPostRequest() {
var data = {
'name': 'Bob Smith',
'age': 35,
'pets': ['fido', 'fluffy']
};
var headers = {
"key":'xxxxxxx'
};
var options = {
"headers": headers,
"Content-Type": "application/json",
"method": "post",
"payload": JSON.stringify(data)
};
response = UrlFetchApp.fetch("http://example.com", options);
var code = response.getResponseCode();
console.log(code)
var content = response.getContentText();
console.log(content)
}
補足:パラメータとボディの作り方
options のパラメータにはヘッダ、HTTPメソッドなどがあります。こちらに整理(Advanced Parameters)されています。上の例では、JSON.stringify を利用してオブジェクトをJSON形式に変換して、payload(ボディ)に詰めています。
HTTPレスポンスの中身を取り出す
UrlFetchApp.fetch でレスポンスを無事に取得できたら、その結果はHTTP Responseクラスに格納されます。
HTTPレスポンスコードを取得する
HTTPリクエストが正常に終わったかを確認するために、HTTPレスポンスコードを取得します。
var code = response.getResponseCode(); // responseはfetchの返り値です。以下も同じ。 // codeはIntegerとなる(例:200) console.log(code)
レスポンスの本体を取得する
var content = response.getContentText();// contentはStringとなる。 var result = JSON.parse(response.getContentText()); // レスポンスをjsonに変換する
レスポンスの中身を取り出す
# APIのURLにGETレスポンスを送る
function sendGetRequest() {
var response = UrlFetchApp.fetch("https://zipcloud.ibsnet.co.jp/api/search?zipcode=221-0866");
console.log(response.getContentText())
var content = response.getContentText();// contentはStringとなる
var result = JSON.parse(response.getContentText()); // レスポンスをjsonに変換する
console.log(result) //レスポンス全体
console.log(result.results) //results部分
console.log(result.results[0].address1) // resultsのaddress1部分
};
<実行結果>
・全体
{ message: null, results: [ { address1: ‘神奈川県’, address2: ‘横浜市神奈川区’, address3: ‘羽沢南’, kana1: ‘カナガワケン’, kana2: ‘ヨコハマシカナガワク’, kana3: ‘ハザワミナミ’, prefcode: ’14’, zipcode: ‘2210866’ } ], status: 200 }
・results部分
[ { address1: ‘神奈川県’, address2: ‘横浜市神奈川区’, address3: ‘羽沢南’, kana1: ‘カナガワケン’, kana2: ‘ヨコハマシカナガワク’, kana3: ‘ハザワミナミ’, prefcode: ’14’, zipcode: ‘2210866’ } ]
・resultsのaddress1
神奈川県
関連記事:【GAS】TwitterAPIを使ってアカウントのユーザー情報を取得する
関連記事:【GAS】TwitterAPIからリストの確認・リストへのユーザー追加

コメント
[…] 関連記事:GASからAPIを叩く方法とレスポンス処理方法まとめ […]
[…] 関連記事:GASからAPIを叩く方法とレスポンス処理方法まとめ […]
[…] 関連記事:GASからAPIを叩く方法とレスポンス処理方法まとめ […]
[…] 関連記事:GASからAPIを叩く方法とレスポンス処理方法まとめ […]
[…] 関連記事:GASからAPIを叩く方法とレスポンス処理方法まとめ […]