13
14

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.

Google app Scriptでゴミ出し通知botを作った話

Posted at

#はじめに
学びのアウトプットとしてQiita初投稿したいと思います。
最近自動化って面白いなと感じてるyamkです

#Google app Scriptとは
Google app Script(通称:GAS)とはGoogleが開発、提供しているプログラミング言語です。

名前くらい知ってんねん。何ができるか教えろやって方が多いと思うので
何ができるか簡単にまとめると...

  • Googleのアプリケーション(スプレッドシートやGmailなど)をクラウド上で簡単に操作できる。
  • 各社が提供しているAPIを用いて様々なサービス(Lineやslackなど)と連携ができる.
  • 大体javascript っぽいのでなんとなくハードルが低い(主観、まじで主観)

などなど
私自身まだまだ知らないことも多いですが、ざっとこんなところ。
初めて知ったとき”これめっちゃ便利に使えるんでは?”と感動した覚えがあります。

#ゴミ出し通知botを作るに至る経緯
最近引越しをしまして、新しい地域のゴミ捨ての種類(月曜は可燃ごみの日やら、土曜はペットボトルやら..)が
全く覚えらへん!毎回毎回カレンダー見て今日は可燃ゴミね!とかもだるい!
ならラインで前日の夜に通知すれば確認も楽やなと思いbotを作ることに

#bot
とりあえずコード

function trash_res_bot() {
  var accessToken = '########'; 

  var date = new Date();
  date.setDate(date.getDate() + 1);
  var comment = [];
  
  var f=1;
  switch(date.getDay()) {
      case 1:
      comment.push('燃えるごみ')
      break;
      case 2:
      comment.push('なんもなし')
      break;
      case 3:
      comment.push('古紙・雑紙・古着')
      break;
      case 4:
      comment.push('一般ごみ')
      break;
      case 5:
      comment.push('びん・缶ごみ・スプレー缶')
      break;
      case 6:
      if(f===1){
        comment.push('燃やせないゴミ')
        f=0
      }
      else{
        comment.push('ペットボトル')
        f=1
      }
      break;
      
  }
  
  if (comment.length < 1) return;
  
  var text = '\n明日は' + comment.join('、') + ' の日です!\nゴミあるならだしなよ' ;
  
  var message = text;
  var options = {
    'method' : 'post',
    'headers': {
      'Authorization': 'Bearer ' + accessToken
    },
    'payload' : {
      'message': message
    }
  };
  var response = UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options);
  Logger.log(response);
}

これを上から見ていきます。

function trash_res_bot() {
  var accessToken = '########'; 

この部分ですね、
accessToken="#######";

Lineのアクセストークンを##### に入れてください.

以下リンクで自分のLINEアカウントでログインしたら、トークン発行でボタンあると思うので
コピペして#####の部分に貼り付けてください。
https://notify-bot.line.me/ja/

これでLINEとの連携はほぼ完了みたいな感じ。

  var date = new Date();
  date.setDate(date.getDate() + 1);

new Date()は実行したその年月日時分秒を取得する関数
今回ゴミ捨ては明日の情報が欲しいので、date+1になってる。

   switch(date.getDay()) {
      case 1:
      comment.push('燃えるごみ')
      break;
      case 2:
      comment.push('なんもなし')
      break;
      case 3:
      comment.push('古紙・雑紙・古着')
      break;
      case 4:
      comment.push('一般ごみ')
      break;
      case 5:
      comment.push('びん・缶ごみ・スプレー缶')
      break;
      case 6:
      if(f===1){
        comment.push('燃やせないゴミ')
        f=0
      }
      else{
        comment.push('ペットボトル')
        f=1
      }
      break;
      
  }

この部分、明日が何曜日かで処理を変えている
0:日曜、1:月曜,...,6:土曜という対応になっている
今回case 6の部分は自分の地域では土曜が
燃えないゴミ→ペットボトル→燃えないゴミ→...
となっているので交互になるように雑に実装した。

あとはGASのトリガー機能で実行したい時間を適当にセット
自分は午後8時〜午後9時の間に届くようにした。

またGASのファイルの作り方やトリガー設定の仕方(需要あるのかしら)
とかは別でアウトプットしようかなと思います。

ラインの通知はこれをいじればなんとなくなんでも実装出来そう。

結論 GASは便利、LINE Notifyは神。

以上でございます。

13
14
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
13
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?