Lineで自動リマインダーアプリ

Lineで自動リマインダーアプリ:


LINEで自動リマインダーを製作!


弊社の研修にて悩みがありました。

研修場所を知るのがめんどくさい!!PC開いて、クラウドからExcelファイルをダウソして、Excelファイルを開けて、該当の研修場所を探す...
だるい!

研修生の皆も感じていたようで、LINEでは翌日の研修場所の連絡が横行していました。

そこで...

同期と共にLINEで翌日の研修場所の自動リマインドアプリを作っちゃいました!


必要なもの(以下、2つのみです)

  • LINEアカウント
  • Googleアカウント


LINE Notifyにアクセスする

まず、LINE Notify ホームページにアクセス。


lineNotifyHP.png


次に、ページをスクロールし、トークンを発行するをクリック。


lineNotifyToken.jpg


その後、発行するボタンを押し、トークンを控えてください。


ここからはGoogleアカウントを使用します。

  1. お手持ちのアカウントでGoogle Driveにアクセス。
  2. 新規>Google スプレッドシート>空白のスプレッドシート(以下に画像添付)
    スクリーンショット 2019-02-07 11.49.07.png

  3. 以下のURLのスプレッドシートの内容を全てコピーし、空白のスプレッドシートに貼り付け。
https://docs.google.com/spreadsheets/d/1X2dD13BYYoGJeZKOv2JhaDTd5rEtHuMxTjAtvtU2QrM/edit?usp=sharing

4.貼り付け後のスプレッドシートのツール>スクリプトエディタを選択し、スクリプトエディタを開きます。(以下に画像添付)



スクリーンショット 2019-02-07 12.18.37.png


5.スクリプトエディタにあるコードを全て、下のコードに置き換えます。

コード.gs
var LINE_NOTIFY_TOKEN =""; //トークンをここにコピペ 
var LINE_NOTIFY_API = "https://notify-api.line.me/api/notify"; 
 
// 翌日が祝日か判断する関数 
function isHoliday (y,m,d) { 
  const holidayList = { 
  2018: { 
     0: [1, 8], 
     1: [11, 12], 
     2: [21], 
     3: [29, 30], 
     4: [3, 4, 5], 
     5: [], 
     6: [16], 
     7: [11], 
     8: [17, 23, 24], 
     9: [8], 
    10: [3, 23], 
    11: [23, 24] 
  }, 
  2019: { 
     0: [1,14], 
     1: [11], 
     2: [21], 
     3: [29], 
     4: [3, 4, 5, 6], 
     5: [], 
     6: [15], 
     7: [11, 12], 
     8: [16, 23], 
     9: [14], 
    10: [3, 4, 23], 
    11: [23] 
  }, 
  2020: { 
     0: [1, 13], 
     1: [11], 
     2: [20], 
     3: [29], 
     4: [3, 4, 5], 
     5: [], 
     6: [20], 
     7: [11], 
     8: [21, 22], 
     9: [12], 
    10: [3, 23], 
    11: [23] 
  } 
}; 
  // 祝日リストに日付が含まれるかどうか調べ、結果を返す 
  return holidayList[y][m].indexOf(d) !== -1; 
} 
 
function send2() { 
  // スプレッドシートのデータを得る 
  var sheet = SpreadsheetApp.getActive().getSheetByName('グループが変わっても大丈夫な奴'); // シートを指定(シート名を変更の際はここも対応させる) 
  var lastRow = sheet.getLastRow();  
  var lastCol = sheet.getLastColumn(); 
  var values = sheet.getSheetValues(1,1,lastRow,lastCol); 
 
  var t = new Date();// 今日の日付 
  var tomorrow = new Date(); 
  tomorrow.setDate(t.getDate() + 1); 
  var y = t.getYear(); 
  var m = t.getMonth() + 1;  
  var d = t.getDate()+ 1; 
  var firstDate = new Date('October 20, 2018 00:01:00'); // シートの最初の日付が2018/10/19なので、firstDate = 2018/10/20にする。変更時はここの日付も変更する 
 
  // 明日の予定の行を照合 
  timeDifference = Math.ceil((tomorrow - firstDate) / 86400000); // 今日の日付と最初の日の差異を計算 
  var day = values[timeDifference][1]; // 曜日 
  var roomArray = []; // 研修部屋を格納する配列   
  var placeArray = []; // 研修場所を格納する配列   
  var groupArray = []; // グループを格納する配列 
  var count2 = 0; 
  for(var i=2; values[timeDifference][i]!=""; i=i+3){ 
    roomArray.push(values[timeDifference][i]); 
    placeArray.push(values[timeDifference][i+1]); 
    groupArray.push(values[timeDifference][i+2]); 
    count2++; 
  } 
  //もし、明日の曜日が土か日か祝日だと、送らない 
//  if(!(day=="日"||day=="土"||isHoliday(y, (m-1), d))){ 
      var count = 0; 
      var body = "明日(" + y +"年" + m +"月"+ d +"日)は\n"; 
      for(var i=2; values[timeDifference][i]!=""; i=i+3){ 
        body = body + placeArray[count] + " " + roomArray[count] + " " + groupArray[count]; 
        count++;   
        if(count2!=count){ 
          body = body  + ", \n";  
        } 
      } 
      body = body + "\nです。"; 
    _sendMessage2("\n"+body); 
//  } 
} 
 
 
// メッセージを送信する関数 
function _sendMessage2(msg) { 
  // 認証情報のセット 
  var headers = { 
    "Authorization": "Bearer " + LINE_NOTIFY_TOKEN 
  }; 
  // メッセージをセット 
  var payload = { 
    "message": msg 
  }; 
  // 送信情報をまとめる 
  var options = { 
    'method' : 'post', 
    'contentType' : 'application/x-www-form-urlencoded', 
    'headers': headers, 
    'payload' : payload 
  }; 
  Logger.log(options); 
  // 実際に送信する 
  var NOTIFY_API = "https://notify-api.line.me/api/notify"; 
  var response = UrlFetchApp.fetch(NOTIFY_API, options); 
  Logger.log(response); 
} 
6.コード内の「トークンをここにコピペ」と書いてあるところの横の""内に先ほど控えていたトークンを貼り付けます。


完成!

もう、完成しました!

それでは、実行してみましょう。

スクリプトエディタ(コードを貼り付けた所)のメニューバーの関数を選択のプルダウンからsend2を選択し、2つ左隣の実行ボタンをクリック。(以下に画像添付)

スクリーンショット 2019-02-07 12.44.04.png

そうすると、「承認が必要です」という画面が出てくるので、「認証を確認」を押します。(初回のみ)(以下に画像添付)


スクリーンショット 2019-02-07 12.49.41.png


次に出てくるGoogleアカウントのアクセスも許可を押します。

許可を押した後は、再び実行ボタンを押し、LINEに通知が来たら成功です。


自動で通知を送る。

今先ほどは、手動で送りましたが、自動で送れるようにしましょう。

まず、下記の画像のような時計マークのアイコンをクリックします。


図3.png


それから、「トリガーが設定されていません。今すぐ...」をクリック。


図2.png


以下の画像のように私は設定しました。これで毎日、翌日の予定を8時頃に通知してくれます。


スクリーンショット 2019-02-07 14.01.42.png


最後に、このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)