HTTP通信_2(GASの学習_8)

この連載では僕が所属しているノンプロ研で受講した、GAS初級講座での気づきをまとめています。前回の記事はこちらです。

hirocom777.hatenadiary.org

前回は、HTTP通信を学びました。GETリクエストでWebからデータを取得してみました。

今回もHTTP通信です。データを送信してみましょう。

POSTリクエス

前回は、UrlFetchAppのfetchメソッドを使ってWebの情報を得ていました。この時2番目の引数(params)を省略していますので、リクエストのHTTPメソッドはGETリクエストとなります。

今回はPOSTリクエストを指定します。POSTリクエストは情報を送信するためのリクエストです。 確認には以下のサイトを使用します。

httpbin.org

シンプルなHTTPリクエストとレスポンスを返してくれるサービスです。以下のURLにPOSTリクエストを送るとリクエストが正常に送信されたか確認できます。

https://httpbin.org/post

以下のスクリプトを実行してみましょう。

function myFunction() {

  const url = 'https://httpbin.org/post';
  const params = {
    method: 'post',
    payload: { custname: 'Bob', custtel: '0900000', comments: 'よろしく!' }
  };

  const response = UrlFetchApp.fetch(url, params);
  console.log(response.getContentText());

}

以下の結果が返ってきました。

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "comments": "\u3088\u308d\u3057\u304f", 
    "custname": "Bob", 
    "custtel": "0900000"
  },
  以下省略 
{

これはJSON形式のデータです。POSTリクエストで送ったデータが、返ってきているように見えますね。

JSONオブジェクト

JSONJavaScript Object Notation)形式とは、アプリケーション間のデータのやり取りをする文字列データの形式の一種です。その名のごとくJavaScriptのオブジェクト型記述方式です。

JSONオブジェクトは、JSONを操作する機能を提供するJavaScriptの組み込みオブジェクトです。

JSON.parse(文字列)

とすると、文字列をJSONとして解析してオブジェクト型に変換します。先のスクリプトを以下のように書き換えて実行してみましょう。

function myFunction() {
  const url = 'https://httpbin.org/post';
  const params = {
    method: 'post',
    payload: { custname: 'Bob', custtel: '0900000', comments: 'よろしく' }
  };
  const response = UrlFetchApp.fetch(url, params);
  const text = response.getContentText();

  const obj = JSON.parse(text);
  const formData = obj.form;

  console.log(formData.custname);
  console.log(formData.custtel);
  console.log(formData.comments);
}

以下の結果が返ってきました。POSTリクエストの内容が正常に送付されたことが確認できます。

Bob
0900000
よろしく

Web API

APIApplication Programming Interface)とはプログラムを使って、他のアプリケーションを操作する仕組みです。Web APIとはHTTP通信を使ったAPIで、現在多くのサービスがWeb APIを用意しています。

各サービスで決められたURL(リクエストURL)にリクエストすることで、サービスを操作したり、情報の取得ができます。

以下のURLでは郵便番号を指定すると、該当する住所を取得できます。

zipcloud.ibsnet.co.jp

以下のスクリプトを実行してみましょう。

function myFunction() { const url = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=7830060';

const response = UrlFetchApp.fetch(url);

const obj = JSON.parse(response.getContentText());

const result = obj.results[0];//複数回答がある場合は配列で回答 console.log(都道府県別名:${result.address1}); console.log(市区町村別名:${result.address2}); console.log(町域名:${result.address3}); }

以下の結果が返ってきました。郵便番号に対応する住所が取得できています。

都道府県別名:高知県
市区町村別名:南国市
町域名:蛍が丘

色々なWebサービスとの連携が考えられますね!!

GAS初級講座でした

以上が僕が受講したGAS初級講座の振り返りです。こうやって復習すると理解が深まると実感しました。最後までお付き合いいただき有難うございました!! GAS関連記事まとめ - HiroCom777の学習記録