定期的に天気情報をgmailで送信する | GoogleAppsScript入門

前回の続きです。

今回は他のサービスと連携して情報を取得して送付する形で作ってみたいと思います。

天気情報取得サービスに登録する

無料で取得できるサービスはいくつかありますが、今回OpenWeatherMapサービスを使ってみます。

登録する際は以下ページが参考になります。

Qiita 無料天気予報APIのOpenWeatherMapを使ってみる

登録完了するとAPI Keyが発行されますので、API Keyを使って以下リクエストがブラウザ上から確認できることを試してみてください。

http://api.openweathermap.org/data/2.5/weather?q=Tokyo,jp&appid=[今回取得したAPI Key]

成功すると以下のような表示が確認できます。

{
 "coord": {
 "lon": 139.76,
 "lat": 35.68
 },
 "weather": [
 {
 "id": 803,
 "main": "Clouds",
 "description": "broken clouds",
 "icon": "04d"
 }
 ],
 ....
 "id": 1850147,
 "name": "Tokyo",
 "cod": 200
}

こちらのAPIを使って連携してきます。

GoogleAppsScriptから天気情報を取得する

上記URLから情報を取得し、必要な箇所だけ抜きとります。

var jsonlog = UrlFetchApp.fetch("http://api.openweathermap.org/data/2.5/weather?q=Tokyo,jp&appid=XXX", {"method" : "get"});
var parselog = JSON.parse(jsonlog);
var weather = parselog.weather[0].main;

1,2行目でAPIを叩いて情報を取得。3行目で天気情報を取得しています。

取得した情報を送信する

取得した情報をgmailで送付します。XXX部分はそれぞれ置き換えてください。

function myFunction() {
  var jsonlog = UrlFetchApp.fetch("http://api.openweathermap.org/data/2.5/weather?q=Tokyo,jp&appid=XXX", {"method" : "get"});
  var parselog = JSON.parse(jsonlog);
  // 天気を抽出
  var weather = parselog.weather[0].main;
  // 雨や雪とのときだけpost
  if (weather != "Clear" && weather != "Clouds" && weather != "Mist" && weather != "Haze") {
    mailsend("天気が" + weather + "です。")
  }
}

/**
 * GMail送信用Function
**/
function mailsend(message) {
  GmailApp.sendEmail(
    "XXX@gmail.com",
    "天気アラートメール",
    message,
    {
      from: "XXX@gmail.com"
    }
  );
}

スケジュール設定で朝や夜職場出る頃にセットするような使い方がおすすめです。定期実行する方法は以下記事を参考にGoogleAppsScriptのトリガ登録を実施しましょう。

これで基本的な何かの情報を取って、判断して何かをする。というフローを作ることができました。

応用するとAmazonのAPIを使い定期的に商品情報をチェックして入荷してたら連絡する、欲しい商品の値段を定期的にチェックする等可能になります。

ここから今までの内容をベースとしてリファレンスやサンプルを見つつ、作りたい処理を作ってみてください。

タイトルとURLをコピーしました