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