今回は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を叩く方法とレスポンス処理方法まとめ […]