見出し画像

Google Apps Script(GAS)とLINE Notifyを使って、Googleカレンダーの予定をLINEで通知する方法

みなさん、こんにちは。まりです。
家族の予定管理って大変ですね。特に子どもたちの習い事や学校の行事など、毎日把握しなければならないことがたくさんあります。

家族の予定管理、もう迷わない!

そんな中、ちょっとした工夫で生活をラクにできる方法があります。それは、Googleカレンダーの予定を前夜にLINEで通知してくれるシステムです。

以前、Gmailで受信した子どもの習い事の入退室通知をLINEで知らせる方法をシェアしたところ、予想外にたくさんの方々からご反響いただき、大変嬉しく思いました。

X/Twitterでは、なんと53万回以上のビューを獲得しました!

GoogleカレンダーとLINE Notify連携で実現!前夜通知システム


今回はさらに別のLINE活用法、Googleカレンダーに登録した家族の予定を、前夜にLINEでお知らせする仕組みをご紹介します。

設定方法を画像付きで丁寧に解説

Google Apps ScriptとLINE Notifyを使えば、簡単にこの仕組みを設定することができます。 ぜひ最後までご覧いただき、ご家族の予定管理を便利にするヒントをお受け取りください。

この小さな工夫で、予定を忘れず毎日を快適に過ごせるようになることでしょう。

Google Apps Script(GAS)とLINE Notifyを使って、Googleカレンダーの予定をLINEで通知する方法

毎日の家族の予定をスムーズに管理するために、Googleカレンダーの予定を前日の夜にLINEで通知するシステムを設定する手順を紹介します。この方法を利用すれば、忘れがちな予定も前もってリマインドされ、翌日の準備がぐんと楽になります。それでは、設定方法に入る前に必要な準備から見ていきましょう。


必要な準備

  1. Googleアカウント:GoogleカレンダーとGASを使用するために必要です。

  2. LINEアカウント:通知を受け取るために必要です。

  3. LINE Notifyのトークン:LINEに通知を送るために必要です。LINE Notifyの公式サイトでトークンを生成します。



1.LINE Notifyでアクセストークンを取得

(1) PCでLINE Notifyのウェブサイトにアクセスします。

(2) QRコードを読み取って、LINE Notify を友達に追加します。


(3)LINEアカウントでログインした後、「トークンを発行する」を選択します。


(4)発行するトークンの名前を入力し、通知を受け取りたいLINEグループを選択します。



(5)「発行する」をおすと、トークンが生成されるので、これをコピーしておきます。


以上でトークンの発行は完了です。

2.Google Apps Scriptを使用してスクリプトを作成

(1)Google Apps Scriptを開始:

  • Googleドライブにアクセスし、「Google Apps Script」を選択します。

  • 新しいスクリプトエディタが開きます。


(2)スクリプトの入力:

ここに、Googleカレンダーの予定を前夜にLINEで通知するためのスクリプトを入力します。基本的なスクリプトはインターネット上で見つけることができますし、私の書いたスクリプトをコピー・アンド・ペーストで大丈夫です。


//A,LINE Notifyと接続する設定
const LINE_NOTIFY_TOKEN = "**********************";
const LINE_NOTIFY_API = "https://notify-api.line.me/api/notify";

// 複数のカレンダーのIDと名前
const calendarInfo = [
  { id: '*************@group.calendar.google.com', name: '家族' },
  { id: '*************@group.calendar.google.com', name: '長男' },
  { id: '*************@group.calendar.google.com', name: '次男' },

];

function sendMessage() {
  // カレンダーから取得する時間の設定
  const today = new Date();
  today.setDate(today.getDate() + 1); // 今日の日付に1日加算して明日に設定
  today.setHours(0); // 当日の午前0時
  today.setMinutes(0); // 分
  today.setSeconds(0); // 秒
  const tomorrow = new Date(today.getTime() + (24 * 60 * 60 * 1000)); // 翌 々日の午前0時

  // 予定を取得する日付の設定
  const monthNum = today.getMonth() + 1; // 月
  const dateNum = today.getDate(); // 日
  const day = today.getDay(); // 曜日
  const dayArray = ['日', '月', '火', '水', '木', '金', '土'];
  const thisDate = monthNum + "月" + dateNum + "日"; // 明日の日付
  let sendMessage = "\n" + thisDate + "(" + dayArray[day] + ")の予定は以下の通りです。\n\n";

  // 複数のカレンダーから予定を取得
  let events = [];
  calendarInfo.forEach(function(calendar) {
    var cal = CalendarApp.getCalendarById(calendar.id);
    var calEvents = cal.getEvents(today, tomorrow);
    calEvents.forEach(function(event) {
      event.calendarName = calendar.name; // イベントにカレンダー名を追加
    });
    events = events.concat(calEvents);
  });

  // 予定の内容を整形してメッセージに追加
  if (events.length === 0) {
    sendMessage += "予定はありません。";
  } else {
    events.forEach(function(event, index) {
      const title = event.getTitle();
      const startTime = formatDate(event.getStartTime());
      const endTime = formatDate(event.getEndTime());
      // ここでカレンダーの名前も含める
      sendMessage += `${index + 1}. [${event.calendarName}] ${title} (${startTime} ~ ${endTime})\n- - - - - - - - - - -\n`;
    });
  }

  // LINEに送信
  UrlFetchApp.fetch(LINE_NOTIFY_API, {
    "method": "post",
    "payload": "message=" + encodeURIComponent(sendMessage),
    "headers": {"Authorization": "Bearer " + LINE_NOTIFY_TOKEN}
  });
}

// 日時をHH:MM形式に整形する関数
function formatDate(date) {
  return Utilities.formatDate(date, Session.getScriptTimeZone(), 'HH:mm');
}

(3)個人で設定が変更が必要な項目

・アクセストークンの設定: スクリプトの"************"のところに、LINE Notifyから取得したアクセストークンを書いてください。

const LINE_NOTIFY_TOKEN = "**********************";

・カレンダーIDとその名前の設定: 我が家では、家族それぞれが個別のGoogleカレンダーを持っているので、各カレンダーからの予定をまとめて通知しています。それぞれのカレンダーIDをスクリプトに追加し、全員の予定を一つのメッセージにまとめて通知できます。

*************@group.calendar.google.comのところは、ご自身のカレンダーIDを、'家族'や’長男’のところも、ご自身でわかりやすく変更してください。

// 複数のカレンダーのIDと名前
const calendarInfo = [
  { id: '*************@group.calendar.google.com', name: '家族' },
  { id: '*************@group.calendar.google.com', name: '長男' },
  { id: '*************@group.calendar.google.com', name: '次男' },

];

カレンダーIDの確認の仕方がわからない場合は、こちらの記事が参考になります。

(4)プログラムの実行:

・プログラムの保存:作成したプログラムを保存します。画面上部にある「名前を付けて保存」を選択し、プログラムにお好みの名前を付けます。

・プログラムの実行:保存後、エディタ上部のドロップダウンメニュー「関数を選択」から「sendMessage」を選択します。
右隣にある実行ボタン(▶︎マーク)をクリックします。

初めての実行時には、Googleからの許可を求められます。画面に表示される警告に惑わされず、「詳細」をクリックし、「(安全ではないページへ)移動」を選択して進んでください。
続いて表示される画面で、プログラムに必要な権限を許可します。

3.トリガーの設定


スクリプトエディタの「トリガー」画面から、スクリプトが毎日特定の時間に実行されるように設定します。これにより、前日の夜に翌日の予定が自動的にLINEに通知されるようになります。

スクリプトエディタの左上にある時計マークのアイコンをクリックし、「トリガー」を選択します。

  • 画面右下にある「+トリガーを追加」をクリックします。

  • 「実行する関数を選択」で「sendMessage」を選びます。

  • 「イベントのソースを選択」では「時間主導型」を選択します。

  • 「時間ベースのトリガータイプを選択」で「日付ベースのタイマー」を選びます。

  • 「時刻を選択」で「午後7字から8時」を選択します。(お好きな時間に設定してください。)

こんな感じのLINEが届きます。

まとめ:日常生活を変える小さな一歩

この記事を通じて、Google Apps Script(GAS)とLINE Notifyを使った、Googleカレンダーの予定をLINEで通知する方法を詳しくご紹介しました。日々の忙しさの中で、家族の予定を見落としてしまうことは誰にでもあることです。しかし、このシンプルながらも強力なシステムを設定することで、そのような小さな忘れ物を減らし、毎日をもっとスムーズに過ごすことができます。

技術の活用がもたらすもの

  • 時間の節約:自動化された通知システムにより、手動でカレンダーをチェックする手間が省けます。

  • 忘れ物の減少:前日の夜に翌日の予定をリマインドされることで、大切な予定を見落とすリスクを減らせます。

  • 家族間のコミュニケーションの向上:家族全員が予定を共有しやすくなることで、お互いの計画を理解し合い、サポートしやすくなります。

さらなる一歩へ

今回ご紹介した方法と応用例を基に、自分のライフスタイルや家族のニーズに合わせて、さらにカスタマイズを加えてみてください。例えば、特定の予定に関するリマインダーを設定したり、天気予報を予定通知に含めるなど、さまざまな工夫をすることで、このシステムの有用性を最大限に引き出すことができます。

技術を活用して日常生活をより便利にすることは、決して難しいことではありません。この記事が、あなたの生活に役立つテクノロジーを導入するきっかけとなれば幸いです。日々の生活をもう一歩快適にするための試みを、ぜひ楽しんでください。

ーーーーーーーーーー
私の書いた本が出版されました!
\Twitterからうまれた/
ちょっと理系なおうち遊びの本

Amazon 売れ筋ランキング  
幼児教育 カテゴリー  有料Top100
ベストセラー1位✨ になりました!
ありがとうございます!

KindleUnlimited, ペーパーバックでも読めます!




この記事が参加している募集

スキしてみて

この記事が気に入ったらサポートをしてみませんか?