日曜エンジニアのアプリ制作
未経験からのWebプログラミング
その他の制作

【GAS】雨の日だけメールが届く通知システムを作る

GAS(Google Apps Script)を使って天気通知システムを作りました。

「雨の日だけGmailで通知を送るシステム」です。

 

経緯

毎日スマホアプリで天気予報を見るのが面倒だったので。雨の日だけわかれば準備ができるので。

Webの天気情報をスクレイピングして、条件によってGmailを送るシステムを作りました。

GASを使った理由は3つあります。

  1. スクレイピングが簡単
  2. Gmailの送信が簡単
  3. 定期実行も簡単

手軽でとても便利です。簡単なツールをすぐ作れるところがGASの魅力です。

 

 

天気データをどこから取ってくるか

いくつかの天気サイトを確認したところ、HTMLの構造的にスクレイピングがしやすそうなYahoo天気を選びました。

北西部(千葉)の天気

 

 

GASにライブラリを導入する

GASでスクレイピングをするためには、ライブラリを導入する必要があります。

使ったライブラリは「Cheerio」です。

 

 

スクレイピング

スクレイピングするために、検証ツール(デベロッパーツール)を使って、Yahoo天気サイトを見ていきます。

HTMLを特定するために、idやclassが付いているところを探します。

天気情報を取る

まずは、天気情報(晴れとか雨)の文字を取得します。

HTMLを確認すると、

<p class="pict">......</p>

 

となっています。pictクラスが付与されていますのでこれを使いました。

そのままでは、空白スペースも取得されてしまうので、trim()メソッドで空白を削除します。

 

降水確率

メールには、降水確率ものせたいので降水確率も取得します。

同じようにHTMLを確認すると、tableタグの中に、

<tr class="precip">.....</tr>

 

が確認できますので、これを使います。

 

降水確率は、以下のようなテーブルになっていますので。。。

時間0-66-1212-1818-24
降水10%20%50%60%

時間帯ごとに4つのデータを取得して、配列で保存します。

 

 

if文で分岐処理

スクレイピングでデータが取得できたので、あとは「雨」のときだけ、メールを送る処理を作ります。

 

条件式

if (weather.search("雨") != -1) {
  // 雨の時の処理
}

search()メソッドは、最初の文字から最後の文字まで検索し、一致した位置を返すメソッドです。

検索文字列に一致するものが無い場合は、「-1」が出力されます。

なので、「雨」「雨のち晴れ」「晴れのち雨」のように「雨」という文字がどこかしらに入っている時は「-1」を返します。

 

GASでGmailを送る処理

GASでGmailを送るには、以下のメソッドを使います。

GmailApp.sendEmail(address, subject, body);

 

GASの教科書

参考にした本です。Amazonレビュー上位の本です。