LoginSignup
42
29

More than 3 years have passed since last update.

GASでHTTPクライアント処理を実施する(URL Fetch Service)

Last updated at Posted at 2020-01-08

このポストの目的

Google Apps Scriptを用いてアプリケーションを開発する際に、外部のWebAPIへアクセスする場合があります。その際に利用する、URL Fetch Serviceの利用方法をまとめます。

もとの情報はGoogleの開発者サイトのリファレンス(G Suite Developer / URL Fetch Service )を参考にしています。

URL Fetch Service

URL Fetch Serviceは2つのクラスから構成されます。

  • UrlFetchApp
    • HTTPクライアント用のクラス。
  • HTTP Respose
    • UrlFetchAppで取得したHTTPレスポンスを管理するためのクラス。

UrlFetchApp

HTTPクライアント用のクラスです。今回の例の場合はこのクラスを利用してWebAPIに接続します。

HTTP GETを行う場合

fetch関数にURLを渡します。下記のコードは、OpenBDという書籍APIにアクセスする例です。GETリクエストで、QueryStringにパラメータ(ISBN)を渡した場合の記述方法です。

var response = UrlFetchApp.fetch('https://api.openbd.jp/v1/get?isbn=' + isbn);

HTTP POSTを行う場合

POST用のボディは、optionsとしてfetch関数に渡します。

var book = {
  'title': 'すべてがFになる',
  'comment': 'ドキドキして面白かった'
};

var options = {
  'method' : 'post',
  'contentType': 'application/json',
  'payload' : JSON.stringify(book)
};

var response = UrlFetchApp.fetch('https://httpsample.org/book', options);

補足:パラメータとボディの作り方

options のパラメータにはヘッダ、HTTPメソッドなどがあります。こちらに整理(Advanced Parameters)されています。上の例では、JSON.stringify を利用してオブジェクトをJSON形式に変換して、payload(ボディ)に詰めています。

HTTP Response

UrlFetchApp.fetch でレスポンスを無事に取得できたら、その結果はHTTP Responseクラスに格納されます。

HTTPレスポンスコードを取得する

HTTPリクエストが正常に終わったかを確認するために、HTTPレスポンスコードを取得できます。

var code = response.getResponseCode();
// responseはfetchの返り値です。以下も同じ。
// codeはIntegerとなる(例:200)

HTTPレスポンスのボディを取得する

ボディはgetContextText() で取得します。

var content = response.getContentText();
// contentはStringとなる。

JSONデータをオブジェクトに変換する

単純なStringのままではプログラム中で処理しづらいため、オブジェクトに変換します。

var o = JSON.parse(response.getContentText());
// oはObjectとなる。もとのJSON構造に合わせてプロパティでアクセスできます。

以上です。

42
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
29