![見出し画像](https://assets.st-note.com/production/uploads/images/150195125/rectangle_large_type_2_3c85d2f888cb9dd1caed386018a14076.png?width=1200)
ノーコードでもできる!気象庁の地震情報を自動で取得&メール通知してみた
わたくし鹿児島に住んでいまして2024年8月8日の宮崎(日向灘)の地震ももれなく体験しました。幸い揺れはしたものの被害はなくまずは一安心でした。
ふと思ったこと
先に書いた地震の際に所属する会社から安否確認のメールが届きまして普通に回答しましたが、これを自作できないかと考えたわけです。(安否確認のサービス自体はいくらでもあるので実用性というよりは興味本意)
そうだAppSheetでやってみよう
AppSheetとは私がこよなく愛するノーコードでアプリを作成できるサービスです。ノーコードといってもリレーショナルデータベースの仕組みが超しっかりしてて外部との連携もできる優れものです。なんといっても提供元がGoogleなのでサービスが消滅したりのリスクもほぼないと思われます。
今回の仕組み
登場人物
気象庁の地震情報API
AppSheet一族
地震情報APIとの窓口君
もらった地震情報を整理・保管する人
一族に取得した地震情報をお知らせする人
gmail(代役SlackでもOK)
それぞれの役割
地震情報窓口君が10分に1回、地震情報API君に「最新の地震情報ください!」と地震情報API君に依頼します。
地震情報API君が日本で起きた(多分マグニチュード3以上の)最新の地震の情報をくれます。
地震情報窓口君が地震情報を受け取り、整理・保管する人に渡します
整理・保管する人は地震情報を貯める箱に地震情報を入れていきます。その時前にもらったのと同じ地震だったら箱に入れず、新しい地震なら箱に入れます。
また新しい地震なら、一族に知らせるというしきたりなのでお知らせ担当に一族にお知らせするように依頼します。
依頼された人は地震情報を一族にメールでお知らせします。(SlackでもLINEでも良いですがとりあえずメールで)
いざ、AppSheetで作成
上記で書いた内容ですが、これもAppSheetで作成する場合はノーコード(つまりはプログラミングなし)で作ることができます。
今回利用するAppSheetの機能たち
1、オートメーション機能(1):Appsheetでは作成した処理を時間指定で起動させることができます。時間指定についてはGoogleカレンダーの予定と同じように繰返しの設定もできるので便利です。この機能を用いて以下の人間ならメンタルがやられそうな仕事をたんたんとこなしてくれます。
10分に1回、地震情報API君に「最新の地震情報ください!」と地震情報API君に依頼します
2、オートメーション機能(2):今回は気象庁の地震情報APIを利用するのですがそれもノーコードでできます。(APIについては割愛しますが、データが一般公開されていてそれを呪文で呼び出せばデータをくれる仕組みのことです)AppSheetにはWebhookという呪文を唱えるための機能が備わっているのであとは気象庁APIのルールに基づいて呪文を唱えれば(=テンプレートにあてはめて設定すれば)地震情報を得ることができます。
https://api.wolfx.jp/jma_eew.json
3、オートメーション機能(3):メール通知。AppSheetではメール通知はテンプレートが用意されており容易にAppSheetにためておいたデータをメールで通知することができます。(宛先も貯めておいたデータから設定することもできますし、添付ファイルもOKです)。また先に紹介したWebhookの機能を利用すればSlackやLINEにも通知出来ます。
完成系はこんな感じです。
![](https://assets.st-note.com/img/1723245943812-8PU94Rxhjx.png?width=1200)
![](https://assets.st-note.com/img/1723245987612-RJmEmM6zwd.png?width=1200)
![](https://assets.st-note.com/img/1723246126492-Z5UjncXiGL.png?width=1200)
見えてきた課題
地震発生から相当時間が経たないと気象庁の地震情報APIが更新されない?もともと安否確認を想定していたのであまりにもタイムラグがあると要件を満たさない。
対策:他のAPIを探してみるか?
1につながるかもしれませんが、今回APIを使って地震情報を得る際に(いくつかある呪文の種類の中で)”GET”を利用しましたが、条件(例えばマグニチュード3以上ならばとってくるとか)を指定できませんでした。何か方法はあるかもしれませんが今回は追及せず💦。
対策:別の呪文”PUT”で何かいい感じにならないか試してみる
ここまで読んでくださりありがとうございます!
書いたように呪文のところは改善の余地はありそうですがせっかっくここまで読んでいただいたのでオートメーションの設定のところをペタペタと貼りますのでもしご興味があられる方はお試しくださいませ。
オートメーション全体
気象庁のAPIから地震情報を得てメール通知するオートメーションです
![](https://assets.st-note.com/img/1723246699332-83vkzl4JYx.png?width=1200)
getEQinfoの設定
![](https://assets.st-note.com/img/1723247030237-jrpSNprDKo.png?width=1200)
INSERT処理の設定
![](https://assets.st-note.com/img/1723247140345-773jxTuSdN.png)
見切れている部分はこう書いてあります
[getEQinfo].[EventID]
[getEQinfo].[Title]
[getEQinfo].[Hypocenter]
[getEQinfo].[OriginTime]
[getEQinfo].[Latitude]
[getEQinfo].[Longitude]
[getEQinfo].[MaxIntensity]
[getEQinfo].[Depth]
[getEQinfo].[Magunitude]
新しい地震たったらメールをする
解説はしませんがこういう数式で、新しい地震か以前にも受け取った地震情報か?を判断しています。
[_THISROW].[地震情報ID]<>ANY(SELECT(地震情報[地震情報ID],[作成日時]=MAX(地震情報[作成日時])))
メール設定
![](https://assets.st-note.com/img/1723247529684-ZqB6sTd7rI.png)
というわけで今回はAppSheetで地震情報を貯めて新しい地震ならお知らせする!というところをAppSheetでやってみた記録と課題を書いてみました。
今後もAppSheet やその他DXによる自動化などの記事を書いていきますのでよろしくお願いします。
最後にもしこの記事が少しでもお役に立てたならスキを押していただけるととても嬉しいです。
いいなと思ったら応援しよう!
![たなか屋](https://assets.st-note.com/production/uploads/images/154578064/profile_4e0b58a400dcb679c4b8e66cebf289ee.jpg?width=600&crop=1:1,smart)