気象庁のサイトから地震情報を取得してメール通知する


この記事でやること

気象庁のサイトから地震情報を取得して、

緊急地震速報(震度5弱以上)レベルの場合はメール通知するプログラミングを行います。

Google Apps Scriptで作ります。

 

 

この記事を書くに至った経緯

先日、Googleフォームを用いて安否確認システムを作りました。

Googleフォームを用いて安否確認システムを作成

 

地震が発生した際に、メールを自動送信する仕組みを作りたくてプログラムを書くことにしました。



情報の取得元について

はじめに、情報の取得元について紹介しようと思います。

気象庁防災情報XMLフォーマット形式電文の公開(PULL型)」のAtomフィード > 地震火山 を押下すると地震情報のxmlを確認することができます。

今回は30分ごとに地震情報を取得しようと思うので「長期フィード」のxmlを使用します。

※2019/06/18追記「長期フィード」は毎時更新でしたので、30分ごとの場合は「高頻度フィード」に読み替えて下さい。(最下部の参考プログラムは高頻度フィードで実装しています)

 

 

地震火山情報の一覧を確認することができます。

「揺れ」というキーワードで検索すると地震情報がヒットします。

linkタグのurlを開きます。

 

 

詳細情報が表示され、Itemタグに震度と地域が表示されています。

ReportDateTimeには時刻が表示されています。

 

 

この一連の作業をプログラムで行い、内容をメール通知する仕組みを作ります。

 



プログラム手順

Googleスプレッドシートにアクセス

スプレッドシートにとりあえず以下のように書いてください。

プログラムで使うのはセル「C:2」だけです。日時は過去であればなんでもOKです。

・B:2 ⇒ 前回スクリプト実行時間

・B:4 ⇒ 30分ごとに実行するよう設定して利用する

・C:2 ⇒ 2018-09-09 14:54:45

 

 

②スクリプト エディタを開く

 

③プログラムを書く

ファイル名は何でもいいのですが「緊急地震速報」にしました。

 

プログラムは以下参照。

24行目まで:1つめのxmlのデータが多いので、セル「C:2」に書いてある、前回スクリプト実行時刻以降のデータのみ探索を行います。

29行目まで:現在時刻を、セル「C:2」に上書きします。

39行目:1つ目のxmlの内、震度3以上の場合は2つめのxmlを探索します。(震度3以上の場合は「震度速報」という表記になる)

58行目:「地震発生時刻 > 前回スクリプト実行時刻」かつ「震度が5~9」の場合は、メール送信対象の情報。

70行目:メール送信対象があった場合は、通知を行う。

71行目:宛先「address@gmail.com」を書き換えてご利用ください。(通知先のメールアドレス)

72行目:件名「安否確認」を書き換えてご利用ください。

73行目:本文「https://www.google.co.jp/」を書き換えてご利用ください。(安否確認のGoogleフォームへのリンクを書いてください。詳細はこちら)

 



④トリガーを設定

最後に30分ごとにプログラムを起動するための設定を行います

編集 > 現在のプロジェクトのトリガー

 

選択して、保存。

 

 

以上で設定完了です!

30分ごとにプログラムが実行され、条件に合致すればメール通知が行われます。

震度5弱以上の地震は頻発しないので、動作確認したい場合は、59行目の条件を「震度[3-9]」にしたり、コメントアウトしてみてください。

ちなみに、ログの確認方法はスクリプトエディタより「表示 > ログ」です。

 

最後まで読んで頂きありがとうございました^^

この投稿へのコメント

  1. アバター
    ジーク said on 2018年11月2日 at 9:34 AM

    ありがとうございます。

    大変有益な情報でした。
    参考にさせていただきました。

    「気象庁防災情報XMLフォーマット形式電文の公開(PULL型)」のサイトが移動してました。

    移動先は下記のようです。
    http://xml.kishou.go.jp/xmlpull.html

    xmlの保存先に変更はないようなのでスクリプトはそのままで動きました。

    • s
      s said on 2018年11月3日 at 9:19 PM

      ご連絡頂きありがとうございます!
      リンクを更新致しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL