4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Apps ScriptAdvent Calendar 2019

Day 15

毎日天気図や衛星画像を配信してくれるslackチャンネルを作ってみた

Last updated at Posted at 2019-12-27

気象の勉強をしています、@gokkozemiseiです。
気象庁ホームページから毎日公開されている天気図や衛星画像など、天気予報をするのに必要な情報を毎日見に行こう…と思いつつ、なかなか時間もかかってできていなかったので、slackを使って自動配信してみました🐧🌤 気象の勉強をしている方、天気図好きな方に是非読んでいただきたいです。
(ちなみに私はGASを初めて使いました!JavaScriptも使った事ないです!w)

#まずは実行結果をご覧ください💁‍♀️
JAFfOZI%Q4yXMqZOAENAYg_thumb_77e.jpg

##情報の取得元
▼気象庁の高層天気図
https://www.jma.go.jp/jp/metcht/kosou.html

▼短期予報解説資料
https://n-kishou.com/ee/exp/exp.html
短期予報解説資料とは、気象庁が出している天気予報の解説資料です。
民間の気象予報士さんもこれを参考にして予報を出しているようです。

#このチャンネルを作るのに必要なもの

  • Slackアカウント
  • Googleアカウント
  • PC(ipadでもGAS編集できるかと思ったけどできなかったので)

#slackでチャンネルを作る
まず配信先のチャンネルを作っておきます。
私は #天気図 というチャンネル名にしました。

  • Webhookを使用する

https://slack.com/services/new/incoming-webhook
▲ここにアクセスし、配信先のチャンネルを選びます。

スクリーンショット 2019-12-01 21.55.04.png

するとURLが作られるので、これをどこかにメモしておきます。

#GASで毎日3回配信中

朝の配信.gs

function morning() {

var slackWebhookUrl ='*********'####ここに先程のURLを入れる;  
var now = new Date();
var yyyymmdd = now.getFullYear()+
	( "0"+( now.getMonth()+1 ) ).slice(-2)+
	( "0"+now.getDate() ).slice(-2);
    
var yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
var previous_day =yesterday.getFullYear()+
	( "0"+( yesterday.getMonth()+1 ) ).slice(-2)+
	( "0"+yesterday.getDate() ).slice(-2);
    
var yymmdd =yyyymmdd.substring( 2, 8 );

var sokuhou_tenkizu ="おはようございます!▼本日6時の速報天気図をどうぞ!"+"\n"+'https://www.jma.go.jp/jp/g3/images/jp_c/'+yymmdd+'06.png';

var asas = "▼本日3時のASASです!"+"\n"+'https://n-kishou.com/ee/image4/lfax/asas_'+yyyymmdd+'0300.png';
var aupn30 ="▼昨日21時の300hPa 天気図(高度・気温・風)です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/aupn30_'+previous_day+'2100.png';
var axfe578 ="▼昨日21時の850hPa気温・風/700hPa上昇流/500hPa高度・渦度です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/axfe578_'+previous_day+'2100.png';
var aupq78 ="▼昨日21時のアジア850hPa 700hPa解析図です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/aupq78_'+previous_day+'2100.png';


var sekigai_gazou ="▼本日9時の赤外画像です!"+"\n"+'https://www.jma.go.jp/jp/gms/imgs/0/infrared/1/'+yyyymmdd+'0900-00.png';
var suijouki_gazou="▼本日9時の水蒸気画像です!"+"\n"+'https://www.jma.go.jp/jp/gms/imgs/0/watervapor/1/'+yyyymmdd+'0900-00.png';
var image=[sokuhou_tenkizu, asas, aupn30,axfe578,aupq78];


    for(i=0;i<6;++i){   
    var url = image[i]
        
      var data = { 
    'text': url,
    "unfurl_links": true
  };
    
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };

  UrlFetchApp.fetch(slackWebhookUrl,options);
}

}

同様に作っていきます。

10時頃の配信.gs

function eisei() {
var slackWebhookUrl ='*********'####ここに先程のURLを入れる;  
var now = new Date();
var yyyymmdd = now.getFullYear()+
	( "0"+( now.getMonth()+1 ) ).slice(-2)+
	( "0"+now.getDate() ).slice(-2);

    
var yymmdd =yyyymmdd.substring( 2, 8 );

var sekigai_gazou ="▼本日9時の赤外画像です!"+"\n"+'https://www.jma.go.jp/jp/gms/imgs/0/infrared/1/'+yyyymmdd+'0900-00.png';
var suijouki_gazou="▼本日9時の水蒸気画像です!"+"\n"+'https://www.jma.go.jp/jp/gms/imgs/0/watervapor/1/'+yyyymmdd+'0900-00.png';
var image=[suijouki_gazou,sekigai_gazou];


    for(i=0;i<3;++i){   
    var url = image[i]
    
    
      var data = { 
    'text': url,
    "unfurl_links": true
  };
    
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };

  UrlFetchApp.fetch(slackWebhookUrl,options);
}

}
昼の配信.gs


    function afternoon() {
    
var slackWebhookUrl = '*********'####ここに先程のURLを入れる;
var now = new Date();
var yyyymmdd = now.getFullYear()+
	( "0"+( now.getMonth()+1 ) ).slice(-2)+
	( "0"+now.getDate() ).slice(-2);
var yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
var previous_day =yesterday.getFullYear()+
	( "0"+( yesterday.getMonth()+1 ) ).slice(-2)+
	( "0"+yesterday.getDate() ).slice(-2);
    
var yymmdd =yyyymmdd.substring( 2, 8 );

var sokuhou_tenkizu ="ご機嫌いかがですか~?!▼本日9時の速報天気図をどうぞ!"+"\n"+'https://www.jma.go.jp/jp/g3/images/jp_c/'+yymmdd+'09.png';
var aupn35 = "▼本日9時の500hPa 300hPa解析図です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/aupq35_'+yyyymmdd+'0900.png';
var axfe578 ="▼本日9時の850hPa気温・風/700hPa上昇流/500hPa高度・渦度です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/axfe578_'+yyyymmdd+'0900.png';
var aupq78 ="▼本日9時のアジア850hPa 700hPa解析図です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/aupq78_'+yyyymmdd+'0900.png';
var fxfe502 = "予想図も見ていこう~!!▼まずはこちら、初期時刻が本日9時の地上気圧・風・降水量 500hPa高度・渦度 12・24時間予想です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/fxfe502_'+yyyymmdd+'0900.png'   
var fxjp854 ="▼T=12が本日の9時の850hPa相当温位・風 予想図です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/fxjp854_'+previous_day+'2100.png'    
var fxfe5782="初期時刻が本日9時の850hPa気温・風 700hPa上昇流・湿数 500hPa気温 12・24時間予想です!"+"\n"+'https://n-kishou.com/ee/image4/lfax/fxfe5782_'+yyyymmdd+'0900.png'
var image=[sokuhou_tenkizu,aupn35,axfe578,aupq78,fxfe502,fxjp854,fxfe5782]; 

    
    for(i=0;i<9;++i){   
    var url = image[i]
    
    
      var data = { 
    'text': url,
    "unfurl_links": true
  };
    
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'payload' : JSON.stringify(data)
  };

  UrlFetchApp.fetch(slackWebhookUrl,options);
}

}

あとはこれらのスクリプトが毎日のある時間帯に配信されるようにセットするだけです。
スクリーンショット 2019-12-27 14.57.08.png

時計のアイコンから設定できます。
分単位で配信時刻を設定することはできませんが、何時から何時の間に配信してください、という設定ができます。

スクリーンショット 2019-12-27 15.00.46.png

こんなに簡単にBot的なものができましたー:santa_tone2:

現在数名の方がこのチャンネルに参加してくれています。
この記事をコピペすれば同じものが作れますが、それも面倒な方はこちらにDMいただければ、チャンネルにご招待します!
https://twitter.com/zemiseipen 

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?