はじめに
GoogleAppsScript と LINE Notify API を使うことで、毎日指定した時刻に自動で予定の内容を通知することができます。
普段使ってるGoogleカレンダーの予定をLINEで通知できたら便利だと思って作ってみました。
Google Apps Script とは
GoogleAppsScript(GAS)は、GoogleカレンダーやGmail、スプレッドシートなどを連携し様々な業務を自動化できるJavaScriptベースのプラットフォームです。
Googleアカウントがあれば誰でも無料で使うことができます。
LINE Notify API とは
LINE Notifyにログインしてアクセストークを発行することでGASなどのWebサービスからメッセージを受け取れるようになります。こちらも無料で利用することができます。
では、実際に作っていきます。
1. LINEトークンを発行する
LINE NotifyにアクセスしてLINEアカウントでログインしてください。
マイページに移動し、アクセストークンの発行からトークンを発行していきます。
「1:1でLINE Notifyから通知を受け取る」を選び、発行します。
トークン名は何でもいいですが、今回はGASとしておきます。
発行したアクセストークンは後から使うのでコピーしておいてください。
2. Google Drive からプロジェクトを作成する
まず、GoogleアカウントにログインしてGoogleDriveにアクセスしてください。
「新規」から「Google Apps Script」を選択します。「Google Apps Script」がない場合は下の「アプリを追加」から追加してください。
コード編集画面が表示されたら、下記のコードをコピーして貼り付けてください。
const CALENDER_GMAIL = PropertiesService.getScriptProperties().getProperty('CALENDER_GMAIL');
const token = PropertiesService.getScriptProperties().getProperty('ACCESS_TOKEN');
const lineNotifyApi = 'https://notify-api.line.me/api/notify';
function handler() {
const currentDate = new Date();
let fromDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 0, 0, 0);
fromDate.setDate(fromDate.getDate() + 1);
let toDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), 23, 59, 59);
toDate.setDate(toDate.getDate() + 1);
const calendar = CalendarApp.getCalendarById(CALENDER_GMAIL);
const events = calendar.getEvents(fromDate, toDate);
for (const event of events) {
const message = `${event.getTitle()}\n${event.getDescription()}\n${Utilities.formatDate(event.getStartTime(), 'JST', 'yyyy-MM-dd HH:mm')} 〜 ${Utilities.formatDate(event.getEndTime(), 'JST', 'yyyy-MM-dd HH:mm')}`;
const options = {
"method": "post",
"payload": { "message": message },
"headers": { "Authorization": "Bearer " + token }
};
UrlFetchApp.fetch(lineNotifyApi, options);
}
}
LINEのアクセストークンやメールアドレスはコードに直書きしたくないため、プロパティサービスを使って保存しておいたものを呼び出しています。
headler関数では、実行した時刻を使って翌日の0時から23時59分までの予定をGoogleカレンダーから取得し、for文で予定ごとにAPIを叩いて通知メッセ―ジを送っています。
当日の朝に予定を通知したい場合は、下記の2行を削除しておいてください。
fromDate.setDate(fromDate.getDate() + 1);
toDate.setDate(toDate.getDate() + 1);
プロパティサービスを使用するには、設定のスクリプトプロパティの部分を編集していきます。
「ACCESS_TOKEN」と「CALENDER_GMAIL」というプロパティを追加し、先程のアクセストークンとGmailアドレスを入力して保存してください。
以上で基本的な設定は完了しました。
3. 実行
Googleカレンダーに予定を追加して実行してみます。
実行する関数がheadlerになっていることを確認して「実行」をクリックしてください。
「承認が必要」と表示された場合は、アカウントを選び「安全ではないページに移動」を選択してアカウントへのアクセスを許可すれば大丈夫です。
ここでLINE Notifyから予定が通知されていればOKです。
「実行」の左にあるボタンから保存してください。
あとは毎日実行されるようにトリガーを設定すれば完成です。
「トリガーを編集」から下記のように設定してください。時刻は好きな時間を選んでください。
おわりに
Google Apps Script と LINE Notify API を使って、毎日指定した時刻に通知が来るようにできました。
GASやLINE Notifyは無料で利用できるのでぜひ作ってみてください。
ここまで読んでいただき、ありがとうございました。
コメント