ノンプロ研APIプログラミング講座【freee APIコース】HTTP通信・API
深遠なるfreeeの世界へ旅立つために、「ノンプログラマーのためのスキルアップ研究会」通称ノンプロ研主催のAPIプログラミング講座【freee APIコース】を受講しています。
その受講記録を振り返りも兼ねて記事にしております。
記念すべき第1回は「HTTP通信・API」です。
APIプログラミング講座 freee APIコース第1期、本日開講です!
— もり@ライター×GASプログラミング講師 (@moripro3) September 15, 2021
おかげさまで満員御礼🙌
全4回+卒業LT大会でお届けします!
【カリキュラム】
1.HTTP通信・API
2.freee APIとリクエストの基礎
3.データの取得
4.データの登録#ノンプロ研 #freeeAPI講座 pic.twitter.com/X4JIE92Mou
私たちが日々なにげなく使っているインターネットですが、普段見ているwebサイトがどうやってカラフルで多彩なプレゼンテーションができているのか、あまり意識することはないかもしれません。
webページの表示も、誰かが用意した情報を取得して手元のブラウザで表示しているのですが、そのプロセスで意識せずに使っているHTTP通信の基礎をきっちり学びました。
情報をとってくるという意味のFetchの語感が理解できるか
URLを入力するとパッと表示されるwebページですが、これもあくまで情報を取りに行って手元で表示しているというプロセスなのですが、Fetchという英語のニュアンスがまさにドンピシャで、GASでもAPIの情報を取得するためにUrl Fetchサービスを使います。
このGASのUrl Fetchサービスは、APIの取得だけでなくスクレイピング的に指定したwebページの定期的な情報取得にも使えます。
JSON形式でやってくる
多くのAPIでデータを取得しようとするとJSON形式のデータで取得できます。JSON形式とは、JavaScript Object Notationの略でアプリケーション間のデータのやり取りをする文字列データの形式の一種です。
GASでJSONの操作をするには、JSONオブジェクトに変換して操作します。このJSON文字列・JSONオブジェクトが取り扱いにクセがあって、必要な情報を掘り当てるまでゴリゴリ掘っていく作業が必要で、慣れが必要だなと思いました。
実践編!Url Fetchサービスで気象庁の天気予報を取得してみる
Url Fetchサービスのウォーミングアップに気象庁の天気予報を取得してみようと思いました。気象庁の天気予報は、仕様やサービスの継続性が約束されていないという意味でAPIではないとのことですが、都道府県別の天気予報をURLにアクセスすることでJSON形式で取得できます。
一番伸びてるのはこれかしら。仕様の継続性や運用状況のお知らせを気象庁はお約束していないという意味で、APIではないと申し上げざるを得ないのですが、一方で政府標準利用規約に準拠してご利用いただけます。 https://t.co/QLuhI4DNDv
— TOYODA Eizi (@e_toyoda) February 24, 2021
function weatherForecast() {
const prefCode = '32'; // https://nlftp.mlit.go.jp/ksj/gml/codelist/PrefCd.html
const url = `https://www.jma.go.jp/bosai/forecast/data/overview_forecast/${prefCode}0000.json`;
const response = UrlFetchApp.fetch(url);
const objJson = JSON.parse(response.getContentText());
console.log(objJson);
}
シンプルな上記のようなコードで、下記のオブジェクトが取得できました。
{
publishingOffice: '松江地方気象台',
reportDatetime: '2021-09-21T16:32:00+09:00',
targetArea: '島根県',
headlineText: '島根県では、22日未明から22日昼前まで急な強い雨や落雷に注意してください。',
text: ' 島根県は、高気圧に覆われて概ね晴れています。\n\n 21日夜は、前線や湿った空気の影響で概ね曇り、雨の降る所がある見込みです。\n\n 22日は、前線や湿った空気の影響で曇り、朝にかけて雨が降るでしょう。雷を伴って激しく降る所がある見込みです。前線の通過後は高気圧に覆われて晴れるでしょう。'
}
オブジェクトを取得できたら、ここから必要な情報を抽出・整形して他のアプリに通知したりと利用できるようになります。
今回はシンプルな構造のJSONなので取り扱いが簡単そうですね。