LoginSignup
5
3

More than 1 year has passed since last update.

40 代おっさん GASのHTTPリクエストとHTTPレスポンスについて学ぶ

Posted at

本記事ついて

本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

UrlFetchAppクラスとHTTPリクエスト

UrlFetchAppクラスはUrlFetchサービスのトップレベルオブジェクト

UrlFetchAppクラスの主なメンバー

メンバー 戻り値 説明
fetch(url[, parame]) HTTPResponse urlに対してパラメータparamsを渡してHTTPリクエストを行う
fetchAll(requests) HTTPResponse[] 配列requestsに指定された複数のHTTPリクエストを行う
getRequest(url[, parame]) Object urlとパラメータparamsによるリクエストを表すオブジェクトを返す

fetchメソッドは指定したURLにたいしてHTTPリクエストを行うメソッド

構文

UrlFetchApp.fetch(URL[, パラメータ])

パラメータは必要なものをオブジェクト形式で指定します。
単純なGETリクエストの場合は省略可能

パラメータ タイプ 説明
contentType String コンテンツタイプ(デフォルト:application/x-www-form-urlencoded)
headers Object リクエストのHTTPヘッダー
method String リクエストのHTTPメソッド(デフォルト:GET)
payload String リクエストのHTTPメソッド(POSTの際のボディなど)
followRedirects Boolean リダイレクト先に取得するかどうか(デフォルト:true)
muteHttpExceptions Boolean レスポンスが失敗を示す場合に例外をスローするかどうか(デフォルト:false

複数のリクエストをまとめて行いたいときには、fetchAllメソッドが便利

構文

UrlFecthApp.fetchAll(リクエストの配列)

リクエストの配列は、URLを表す文字列か、リクエストの内容を表すオブジェクトを要素とする。

HTTPResponseクラス

HTTPResponseクラスとは
HTTPリクエストをした際に外部から返答されたHTTPレスポンスを取り扱う機能を提供するクラス

HTTPResponseクラスの主なメンバー

メンバー 戻り値 説明
getAs(contentType) Blod HTTPレスポンスを指定したcontentTypeのブロブに変換
getBlod() Blod HTTPレスポンスをブロブとして返す
getContent() Byte[] HTTPレスポンスのバイナリコンテンツを取得する
getContentText([charset]) String HTTPレスポンスを文字コードcharsetによる文字列に変換して取得する
getHeaders() Object HTTPレスポンスのヘッダーをオブジェクト形式で取得する
getResponseCode() Integer HTTPレスポンスのHTTPステータスコードを取得する

お試し

function tosiki() {
  const response = UrlFetchApp.fetch('https://twitter.com');
  console.log(response.getResponseCode());

  const headers = response.getHeaders();
  for (const key in headers) console.log(key, headers[key]);

  console.log(response.getContentText());
}

お試し(fetchAllメソッド)

function tosiki() {
  const requests = [
    'https://twitter.com/',
    {
      url: 'https://www.facebook.com/',
      method: 'get'
    }
  ];

  const responses = UrlFetchApp.fetchAll(requests);
  for (response of responses) console.log(response.getHeaders()['Content-Type']);
}

参考資料

https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-Google-Apps-Script%E5%AE%8C%E5%85%A8%E5%85%A5%E9%96%80-%E7%AC%AC3%E7%89%88/dp/4798064742

5
3
1

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
5
3