LoginSignup
0
1

More than 1 year has passed since last update.

40 代おっさん GASでHTML・JSONからデータを取り出す

Posted at

本記事ついて

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

HTMLから正規表現でデータを抽出する

HTMLドキュメント全体の文字列から必要なデータのみを取り出すと言う作業が必要となる。
具体的には、StringオブジェクトのmatchメソッドでHTMLドキュメントから該当の要素を取得し、同じくreplaceメソッドでHTMLタグを取り除くという手順になる。

function tosiki() {
  const url = 'https://tonari-it.com/scraping-test/';

  const response = UrlFetchApp.fetch(url);
  const html = response.getContentText();
  const title = html.match(/<title>.*?<\/title>/i)[0];
  console.log(removeTag_(title));

  const entries = html.match(/<h2>.*?<\/h2>/gi);
  for (const entry of entries) console.log(removeTag_(entry));
}

function removeTag_(str) {
  return str.replace(/<\/?[^>]+/gi, '');
}

APIを使ってJSONデータを取得する

APIとは
ソフトウェアの機能やデータを、外部のプログラムから呼び出して利用する仕組みのこと

REST APIとは
APIの形式の1つで、特定のURLに対してHTTPリクエストを送ることで、外部から操作sることが出来る

例として郵便局のAPI

http://zipcloud.ibsnet.co.jp/doc/api

このAPIは以下の定められたリクエストURLを送信することで、JSON形式でレスポンスを受け取ることができる。

https://zipcloud.ibsnet.co.jp/api/search?zipcode={izipcode}

{izipcode}には、7桁の郵便番号を配分なしで指定
このURLをリクエストすることにより、指定した郵便番号に対する住所データをJSON形式で取得できる。

function tosiki() {
  const zipcode = '7830060';
  const url     = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=' + zipcode;
  const response = UrlFetchApp.fetch(url);

  const obj = JSON.parse(response.getContentText());
  console.log(`ステータスコード: ${obj.status}`);

  const result = obj.results[0];
  const {address1, address2, address3} = result;
  console.log(`都道府県名: ${address1}`);
  console.log(`市区町村名: ${address2}`);
  console.log(`町域名: ${address3}`);
}

参考資料

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

0
1
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
0
1