GAS(GoogleAppScript)

GASからAPIを叩く方法とレスポンス処理方法まとめ

この記事は約5分で読めます。

 

今回はGoogle Apps Script(GAS)から外部のWebAPIへアクセス方法について紹介したいと思います。

 

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からリストの確認・リストへのユーザー追加

 

コメント

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

タイトルとURLをコピーしました