スプレッドシートとLINE Notifyを活用して予定を自動リマインドする方法

はじめに

私の息子は少年野球に通っていて、父母会の活動もそれなりに存在します。

そんな中で、各家庭が持ち回りの当番制で順番に担当するようなことがあります。

1〜2ヶ月に1回しか回ってこない当番は、忘れてしまうことも十分に考えられますので一度スケジュールを作成したら自動的にリマインドしてくれると楽だなぁと感じることが多々あります。

この記事では、GoogleスプレッドシートとLINE Notifyを使って、日々の予定を自動でリマインドする方法を紹介します。

このシステムを利用すれば、予定の管理が効率化し、あれ今日あの人だったよね、ということも無くなるでしょう。

必要なツールと準備

この自動リマインドシステムを設定するためには、以下のツールが必要です。

  • Google スプレッドシート
    予定のリストアップと管理のためのプラットフォーム。
  • LINE Notify
    LINEを介してリマインドメッセージを送信するサービス。
  • Google Apps Script
    スプレッドシートのデータをLINE Notifyに送信するためのスクリプトを記述し、実行するプラットフォーム。

手順1. LINE Notifyの設定

最初に、LINE Notifyで個人用トークンを取得する手順を解説します。

  1. LINE Notifyの公式ウェブサイトにアクセスして、アカウントにログインします。
    https://notify-bot.line.me/ja/
  2. 「マイページ」に移動し、「トークンを発行する」を選択します。
  3. トークン名を指定し、通知を受け取りたいLINEグループを選択します。
  4. 「発行する」をクリックし、生成されたトークンを安全な場所に保存します。

手順2. Google スプレッドシートの設定

次に、スプレッドシートを設定します。

  1. 新しいスプレッドシートを開き、「日付」「時間」「予定内容」という3列のヘッダーを作成します。
  2. 下記のように、日付、時間、予定内容を入力していきます。

手順3. Google Apps Scriptでのスクリプト作成

スプレッドシートでの準備ができたら、次はGoogle Apps Scriptを使用してスクリプトを作成します。

スプレッドシートの「拡張機能」から「Apps Script」を選択し、新しいスクリプトエディタを開きます。

下記のスクリプトをコピー&ペーストします。

function sendLineNotify() {
  var token = PropertiesService.getScriptProperties().getProperty('LINE_NOTIFY_TOKEN');
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  
  var message = "本日の予定:\n";
  for (var i = 1; i < values.length; i++) {
    var row = values[i];
    var date = Utilities.formatDate(new Date(row[0]), "JST", "yyyy/MM/dd");
    var time = row[1];
    var content = row[2];
    if (new Date(row[0]).setHours(0,0,0,0) === new Date().setHours(0,0,0,0)) {
      message += `${date} ${time} ${content}\n`;
    }
  }
  
  if (message !== "本日の予定:\n") {
    var options = {
      "method": "post",
      "payload": "message=" + message,
      "headers": {"Authorization": "Bearer " + token}
    };
  
    UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
  }
}

スクリプトのプロジェクトのプロパティから安全にLINE Notifyのトークンを管理するために、スクリプトエディタの「ファイル」>「プロジェクトのプロパティ」>「スクリプトのプロパティ」に移動し、プロパティ名に「LINE_NOTIFY_TOKEN」、値に先ほどLINE Notifyで取得したトークンを入力します。

スクリプトエディタの左側にある時計のアイコンをクリックし、「トリガーを追加」を選択して、新しいトリガーを設定します。実行する関数に「sendLineNotify」を選び、「時間主導型」で「日タイマー」を選択し、実行したい時間帯を指定します。

手順4. スクリプトのテストとトリガーの設定

スクリプトの動作をテストするには、スクリプトエディタで「実行」ボタンをクリックし、「sendLineNotify」関数を実行します。

これにより、設定した予定がある日には、指定したLINEグループに指定したLINEグループにその日の予定が通知されます。

成功した場合、LINEグループには入力した予定が表示され、「本日の予定:」というメッセージに続いて、予定の詳細がリストされます。

トリガーの設定により、このスクリプトは毎日自動的に実行され、予定がある日には自動的にリマインドされるようになります。

時間を指定することで、朝起きた時や仕事を始める前など、都合の良い時間に予定の通知を受け取ることができます。