今回は、GASとLINEのAPIを利用してGoogleカレンダーに登録されているスケジュールをLINE通知させる方法をご紹介。
スケジュール管理は忙しい日々において効率的にタスクをこなすために欠かせない行為です。
適切に管理できれば、仕事でもプライベートでもより充実して快適に過ごすことができます。
通知を使えば、スケジュール管理がもっと楽になります。
本記事で自動通知ができるようになれば、予定を見逃すリスクを低減させ、日常生活や業務の効率を向上させることができます。
初めてプログラミングする方でも簡単に導入できるように、作業ステップごとに画像付きの解説&サンプルコードを提供。
ぜひ最後までお読みください!
GoogleカレンダーとLINE連携させてみよう!
Googleカレンダーは、Googleが無料で提供しているスケジュール管理アプリです。
無料で利用できるにも関わらず、わかりやすい操作で簡単にスケジュール管理が行えるため、多くの方に利用されています。
そんなGoogleカレンダーとLINEが提供しているAPIを連携することで、カレンダーの当日予定通知をLINEで受け取ることができるようになります。
この機能を利用すれば、スケジュール管理が楽になること間違いなしです。
GoogleカレンダーとLINEを連携させれば、予定を自動通知して日常のスケジュール管理を効率的に行えます。
今回作成するスクリプトのイメージ
いよいよGoogleAppsScriptを記述していきます。
今回は、以下のようなスクリプトを作成します。
LINE Notify APIトークンの取得
GASにてLINEの機能を利用するためには、LINE Notify APIにてトークンの発行が必要です。
ブラウザからLINE Notify(https://notify-bot.line.me/ja/)にアクセス。
右上のログインを押します。
普段利用しているLINEのアカウント情報を入力してログインを押します。
本人認証コードが表示されるのでスマホやPCにてLINEを起動し認証コードを入力します。
ログインできたら右上の表示がアカウント名に変わっているのでアカウント名-マイページを押します。
「トークンを発行する」を押します。
通知を送信するトークルームは、「1:1でLINE Notifyから通知を受け取る」を選択します。
表示されたトークンコードをコピーしておきます。
スクリプト作成
まずはGoogleドライブにアクセスしましょう。
ウェブブラウザからGoogleドライブにアクセス。
「ドライブを開く」を押します。
ログインしていない方は、事前にGoogleアカウントでログインしておきましょう。
ドライブを開くと画像のような画面になります。
Googleドライブにて「新規」から「その他」→「GoogleAppsScript」をクリックします。
AppScript画面に切り替わります。
まずは、簡単にAppsScript画面についてご説明します。
1.プロジェクト名
GoogleAppsScript上で管理する際に利用する名前。
クリックすると変更できます。
2.スクリプトファイル
プロジェクトに配置されているスクリプトファイルを確認できます。
各項目横の+ボタンを押すことでファイルを新規で作成できます。
3.ツールバー
スクリプト作成時に必要な操作ボタンがまとめられています。
保存やデバッグ、実行ログ表示、操作を1つ戻るなど。
4.エディターエリア
スクリプトファイルの編集を行うエリアです。
こちらにプログラムを記述していきます。
手始めにプロジェクト名を変更してみましょう。
今回は、メール送信スクリプトなので「CalendarToLine」に変更します。
画像
続いてプログラムを記述していきます。
今回作成するプログラムの完成形は以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
function CalendarToLine() { //******************************** // 処理に必要な設定情報 //******************************** let LINE_NOTIFY_TOKEN = "<ここにトークンコードを入力>";//トークンコード let LINE_NOTIFY_API = "https://notify-api.line.me/api/notify"; // API URL let calendars = CalendarApp.getAllCalendars(); // カレンダー情報 let text = "[Googleカレンダー連携]\n" + "日付:" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "\n"; // LINE通知メッセージ //******************************** // Googleカレンダーよりスケジュール情報を取得 //******************************** for (let calendar of calendars) { // すべてのカレンダー情報を取得 let events = calendar.getEventsForDay(new Date()); // 今日予定されているスケジュールをすべて取得 // スケジュールの内容を取得する for (let event of events) { let title = event.getTitle(); // タイトル let start = Utilities.formatDate(event.getStartTime(), 'JST', 'HH:mm'); // 開始時刻 let end = Utilities.formatDate(event.getEndTime(), 'JST', 'HH:mm'); // 終了時刻 text += '時間:' + start + ' ~ ' + end + '\n' + 'スケジュール名:' + title + '\n'; // タイトル、開始時刻、終了時刻を結合してメッセージ文を作成 } if (events.length > 0) { // 複数予定がある場合は、改行を挿入 text += "\n"; } } //******************************** // LINE通知処理 //******************************** let token = LINE_NOTIFY_TOKEN; // トークン情報 let options = { "method": "post", "payload": "message=" + encodeURIComponent(text), // メッセージをURLエンコード "headers": { "Authorization": "Bearer " + token } }; // APIにて渡す情報を格納 UrlFetchApp.fetch(LINE_NOTIFY_API, options); // LINE通知実施 } |
メイン関数を作成
最初に関数を作成します。
関数とは、1つの目的のため複数の処理を1つにまとめて記述したものです。
GASではこの関数を呼び出して処理を実行します。
今回は、CalendarToLineという名前のファンクションを作成します。
エディターエリアに以下のように記述します。
1 2 3 4 |
function CalendarToLine() { } |
設定情報を記述
スプレッドシートの情報など設定情報を記述します。
以下のように記述します。
1 2 3 4 5 6 7 8 9 |
//******************************** // 処理に必要な設定情報 //******************************** let LINE_NOTIFY_TOKEN = "<ここにトークンコードを入力>";//トークンコード let LINE_NOTIFY_API = "https://notify-api.line.me/api/notify";//APIURL let calendars = CalendarApp.getAllCalendars();//カレンダー情報 let text = "[Googleカレンダー連携]\n" + "日付:" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + "\n";//LINE通知メッセージ |
事前に取得したトークンコードをLINE_NOTIFY_TOKENに入力します。
一文字でも異なると正常に動作しないので注意して入力しましょう。
Googleカレンダーの情報を取得
設定情報の記述ができましたら、Googleカレンダーの情報を取得する処理を記載します。
Googleカレンダーよりスケジュール情報を取得するためには、以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
//******************************** // Googleカレンダーよりスケジュール情報を取得 //******************************** for(i in calendars) { //すべてのカレンダー情報を取得 let calendar = calendars[i]; //カレンダー情報を1つずつ確認 let events = calendar.getEventsForDay(new Date()); //今日予定されているスケジュールをすべて取得 //スケジュールの内容を取得する for(j in events) { let event = events[j]; //スケジュールを1つずつ取得 let title = event.getTitle(); //タイトル let start = Utilities.formatDate(event.getStartTime(), 'JST', 'HH:mm'); //開始時刻 let end = Utilities.formatDate(event.getEndTime(), 'JST', 'HH:mm'); //終了時刻 text += '時間:' + start + ' ~ ' + end + '\n' +'スケジュール名:' + title + '\n'; //タイトル、開始時刻、終了時刻を結合してメッセージ文を作成 } if( events.length > 0 ) { //複数予定がある場合は、改行を挿入 text += "\n"; } } |
この処理では、Googleカレンダーにて取得した当日のスケジュールを1件ずつ処理します。
こういった複数ある情報を1件ずつ処理する方法を繰り返し処理と呼びます。
繰り返し処理には、for()関数を利用します。
1 2 3 4 5 6 7 8 9 10 |
// for ループの基本的な構文 for (初期化; 条件式; 増減式) { // ループ内で実行されるコード } // 例: 1 から 5 までの数字をコンソールに出力する for (var i = 1; i <= 5; i++) { Logger.log(i); } |
この例では、変数 i
が初期値 1
から始まり、5
以下の条件を満たす限り、1
ずつ増加するという基本的な for
ループがあります。各ループの実行時には、コンソールに i
の値が表示されます。
スケジュール登録処理
作成したメッセージをAPIにてLINEへ送ります。
Googleカレンダーよりスケジュール情報を取得する処理の下行に以下の文章を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//******************************** // LINE通知処理 //******************************** let token = LINE_NOTIFY_TOKEN; // トークン情報 let options = { "method": "post", "payload": "message=" + encodeURIComponent(text), // メッセージをURLエンコード "headers": { "Authorization": "Bearer " + token } }; // APIにて渡す情報を格納 UrlFetchApp.fetch(LINE_NOTIFY_API, options); // LINE通知実施 |
LINEへの通知は、APIを利用します。
APIは、種類によって必要な情報が異なります。
LINEのAPIの場合は、トークンとオプションが必要です。
トークンは、前項で作成したLINEトークンを利用します。
オプションには、以下の情報を格納します。
- メソッド:通信種類を設定します。主にPOSTとGET、PUTがあります。それぞれに役割があり、今回のように値を入力して処理を実行させる場合は、POSTを利用します。
- ペイロード:LINEメッセージとして表示するメッセージ内容
- ヘッダー:API側で処理を行う際の参照する情報。ここは設定種類が多いので今回は説明を省きます。気になる方は、LINEのAPIリファレンス(https://developers.line.biz/ja/reference/line-login/)を参照してください。
GASでのAPI利用には、UrlFetchApp.fetch関数を利用します。
UrlFetchApp.fetch関数
UrlFetchApp.fetchは、引数に設定したURLへHTTPリクエストという通信を実行。
応答をHTTPレスポンス(HTTPResponseクラス)が戻り値として取得できます。
要は通信相手から情報を取得するための関数と理解しておけばよいでしょう。
引数は、URL(今回は、LINE_NOTIFY_API変数)と送る情報を格納したオプションを設定することで利用できます。
動作確認
カレンダーに新しいスケジュールを追加し、LINE通知されることを確認します。
カレンダーに当日のスケジュールを追加します。
AppScriptにてスクリプト実行ボタンをクリック。
承認確認が表示されるので指示に従います。
無題のプロジェクト が Google アカウントへのアクセスをリクエストしています
LINEに通知されれば成功です。
トリガー設定して自動通知させるようにしよう!
動作の確認ができたらトリガーを設定してみましょう。
トリガー機能を利用すれば、スクリプトの実行を手動で行わなくてもLINEへ通知してくれるようになります。
今回は、毎日1回朝09:00に自動的にスクリプトが実行されるように設定します。
AppScript画面にて以下の操作を行います。
トリガーボタンをクリック。
トリガーを追加をクリック。
以下の設定でトリガーを設定して保存をクリック。
実行する関数を選択:RegisterSchedule
実行するデプロイを選択:Head
イベントのソースを選択:時間主導型
時間ベースのトリガーのタイプを選択:日付ベースのタイマー
時刻を選択:午前9時~10時
自作したスクリプトにトリガーを設定する場合は、セキュリティ警告が表示されるので許可します。
一覧に設定したトリガーが表示されればトリガー設定完了です。
新着メールを受信して翌日に自動的にスプレッドシートに転記されていれば成功です。
まとめ
今回は、GASとLINEを連携してGoogleカレンダーに登録されている当日スケジュールをLINEに通知してくれるスクリプトを作成しました。
本記事の内容をまとめると以下です。
LINEのAPIは、今回ご紹介したメッセージ作成機能以外にもメッセージの取得やグループチャットへのメッセージ送信、特定のメッセージへの返信など様々なAPIが提供されています。
他の機能も利用してスケジュール管理をより便利にしてみてください。