LoginSignup
43
46

More than 5 years have passed since last update.

【GAS】気象庁のサイトから今日の天気を取得してSlackへ流す

Last updated at Posted at 2016-09-10

 GAS(ギャス)で気象庁のサイトから東京の降水確率、最低最高気温を取得してSlackへ流してみたいと思います。Slackへ流す部分は今日の予定をまとめて教えてくれるslackの秘書BOTを参考にしています。@seya128さん、大変お世話になりました。

 気象庁のサイトのなかの、東京の天気予報のページ
 http://www.jma.go.jp/jp/yoho/319.html

 本来は正規表現を駆使して華麗にピンポイントに抽出するんでしょうが、私の流儀(やり方)はリソースから区切れそうなタグを見つけて絞り込み、さらにそのなかから区切れそうなタグを見つけてを繰り返し、最後は文字列操作で引っこ抜き、微調整を加えます。

コード.gs

function getWeatherData() {

  // データ取得
  var url = "http://www.jma.go.jp/jp/yoho/319.html";
  var response = UrlFetchApp.fetch(url);
  var data = response.getContentText();

  // 大雑把に分割&配列化
  var ary = data.split("<th class=\"weather\">");

  // 朝6時から24時までの降水確率
  var ary2 = ary[1].split("%");
  ary2.pop();
  var ary3 = [];
  for (var i in ary2) {
    ary3.push(ary2[i].substr(-2)+"%");
  }
  var str1 = "06-12:"+ary3[1]+"\n12-18:"+ary3[2]+"\n18-24:"+ary3[3];

  // 最低最高気温
  var min = ary[1].split("min")[1].substr(2,3);
  // 記録がない場合は「---」に置き換える
  if (min == "</t") min = "---";
  var max = ary[1].split("max")[1].substr(2,3);
  if (max == "</t") max = "---";
  var str2 = "最低気温:"+min+"\n最高気温:"+max;

  // Slackへ流す
  var payload = {
  "text" : "今日の天気(気象庁サイト抜粋&加工)\n" + str1 + "\n" + str2,
  "channel" : "#general",
  "username" : "my秘書",
  "icon_emoji" : ":information_desk_person:"
  }
  var options = {
    "method" : "POST",
    "payload" : JSON.stringify(payload)
  }
  var url = "https://hooks.slack.com/services/取得したWebhookURL";
  var response = UrlFetchApp.fetch(url, options);
  var content = response.getContentText("UTF-8");

}

 実行結果です。

スクリーンショット 2016-09-10 15.37.37.png

 毎日5時・11時・17時に発表されるようなので、朝6時〜7時ぐらいにスクリプトを実行するように設定(スクリプトエディタの「リソース」→「現在のプロジェクトのトリガー」→以下略)しておけば出かける前にチェックできていいと思います。今日の予定、天気、電車遅延情報など、いろいろまとめて送るようにしておくと便利ですよね。

43
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
46