LoginSignup
2

More than 1 year has passed since last update.

模試への危機感が全然ないのでLINEで毎朝お知らせさせてみた。

Last updated at Posted at 2022-08-21

作った理由

僕は今受験生なので、毎週のように大事な模試があります。(こんな記事書いてる暇あるんかい!って感じですけど、無視してね😘)
とはいえ模試がありすぎて、最近自分でも訳が分からなくなってきました…
そこで目をつけたのが LINE Notify 、昔IFTTTで天気予報を送る機能を設定したのはいいものの、最近は通知をオフにしていたので、ぜひ有効活用です!

作り方

①スプレッドシートを用意する

スクリーンショット 2022-08-22 0.21.13.png
こんな感じで 模試名日付残り日数 を記入したスプレッドシートを用意します。

②LINE Notifyの設定

LINE Notifyからメッセージが来るように設定します。
https://notify-bot.line.me/ja/
⚠️LINE Notfyで発行したトークンは一度しか表示されないので、確実に保存しましょう!

③スクリプトを書く

今回書いたスクリプトはこんな感じです。

//日付など設定
const today = new Date();
const monthNum = (today.getMonth())+1;
const dateNum = today.getDate();
const day = today.getDay();
const thisDate = monthNum + "" + dateNum + "";
const thisDay = ['','','','','','','']; 

function sendMessage(){
  const token = "LINE Notifyで取得したトークン";
  const lineNotifyApi = "https://notify-api.line.me/api/notify";
//スプレッドシートからデータをとってくる準備
  const spreadSheet = SpreadsheetApp.openById("スプレッドシートのID");
  const listSheet = spreadSheet.getSheetByName('イベントカウントダウン');  
  const lastRow = listSheet.getLastRow();
  let eventList = "";
  let message = ""; 
//データをとってきて、そのデータによって返すメッセージを変える
  for(var i=2; i<=lastRow; i++){
  const eventName = listSheet.getRange(i,1).getValue();
  const tillDays = listSheet.getRange(i,3).getValue();
  if ( tillDays ==0) {
      eventList += "" + eventName + "は今日です、頑張りましょう!\n\n"; 
    } else if ( tillDays >= 1) { eventList += "" + eventName + "まで残り" + tillDays + "\n\n"; 
    }
  }

  if(eventList == "" || eventList == null){
  message = "\n個別に登録されている模試等はありません。";
}else{
  message = "\n" + "今日は" + thisDate + "(" + thisDay[day] + ")" + "です。\n\n" + eventList;
}
//LINEでメッセージを送る
  const options =
   {
     "method"  : "post",
     "payload" : "message=" + message,
     "headers" : {"Authorization" : "Bearer "+ token}
   };

   UrlFetchApp.fetch(lineNotifyApi, options);
}
//毎朝7時に送る設定をする
function setTrigger(){
  today.setDate(today.getDate() + 1);
  today.setHours(7);
  today.setMinutes(0);
  today.setSeconds(0);
  ScriptApp.newTrigger('sendMessage').timeBased().at(today).create();
  }

メインの部分を説明すると、for文でスプレッドシートのイベント名と残り日数を取得した後、その残り日数によって返すメッセージを変えるように処理をしています。
スプレッドシート側では、終わったイベントはシートから消えず、残り日数が負の値で表示されるので、そこの処理がまず必要でした。
そこで、残り日数が「0日」、すなわち「今日」の場合は応援メッセージを、残り日数が1日以上の場合は残り日数を表示するような設定にしてみました。
最後の setTrigger は毎朝7時に送ってくれるようにする関数です。

④実行

このスクリプトを実行すると、こんな感じでLINEが毎朝来ます!LINE_capture_682789701.980545.jpg

おわりに

ものすごく雑な説明になってしまいましたが、今回作ったのはズバリ「LINEで模試までカウントダウンするやつ」です。 これで僕も模試までの日数を確実に把握して、しっかりと対策ができるはず!

参考にさせていただいたWebサイト等

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
2