10
13

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 5 years have passed since last update.

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

Last updated at Posted at 2019-02-07

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のスプレッドシートの内容を全てコピーし、空白のスプレッドシートに貼り付け。

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の立場、戦略、意見を代表するものではありません。

10
13
3

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?