23
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

このポストの目的

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構造に合わせてプロパティでアクセスできます。

以上です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
23
Help us understand the problem. What are the problem?