GoogleカレンダーとLINEをGASで連携!通知設定をマスターする方法
まずはGoogleカレンダーとLINEの連携を理解しよう
GoogleカレンダーのイベントをLINEに通知するためには、その両者をGASを使って連携させる必要があります。
Googleカレンダーのイベントを取得する
Googleカレンダーからイベントを取得するために、まずはGASを使ってGoogleカレンダーのAPIを利用します。
function getUpcomingEvents() {
var calendar = CalendarApp.getDefaultCalendar();
var events = calendar.getEventsForDay(new Date());
for (var i = 0; i < events.length; i++) {
Logger.log(events[i].getTitle());
}
}
このコードでは、デフォルトのカレンダーを取得し、当日のイベントをリストするようにしています。
LINE通知用のスクリプトを書く
次は、LINEのAPIを使って通知を送る部分です。
function sendLineNotification(message) {
var url = 'https://api.line.me/v2/bot/message/push';
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + 'YOUR_ACCESS_TOKEN'
};
var postData = {
'to': 'YOUR_USER_ID',
'messages': [
{
'type': 'text',
'text': message
}
]
};
var options = {
'method': 'post',
'headers': headers,
'payload': JSON.stringify(postData)
};
UrlFetchApp.fetch(url, options);
}
このコードでは、LINEのAPIを利用してメッセージを送信する部分を設定しています。アクセストークンとユーザーIDはLINE Developersで取得したものを使用してください。
GoogleカレンダーとLINEをGASで連携する流れ
より自動化を図るために、Googleカレンダーで登録された予定を自動でLINEに通知する方法を見ていきます。
トリガーを設定する方法
GASのトリガーを使えば、イベントが登録された時に自動でスクリプトが動くように設定できます。
function setTrigger() {
ScriptApp.newTrigger('mainFunction')
.timeBased()
.everyDays(1)
.atHour(8)
.create();
}
ここでは、毎日午前8時にメインの関数を実行するように設定しています。
実際の連携スクリプト
次に、これらを組み合わせたメイン処理部分を示します。
function mainFunction() {
var events = getUpcomingEvents();
for (var i = 0; i < events.length; i++) {
var message = '予定: ' + events[i].getTitle();
sendLineNotification(message);
}
}
メイン処理では、取得したイベントを一つずつLINEに送信しています。
練習問題
LINEに通知する際、イベントの日付を含めて「予定: イベント名(日付)」と表示させるスクリプトを書いてください。
解答・解説
function mainFunctionWithDate() {
var events = getUpcomingEvents();
for (var i = 0; i < events.length; i++) {
var eventTitle = events[i].getTitle();
var eventDate = events[i].getStartTime();
var message = '予定: ' + eventTitle + ' (' + eventDate + ')';
sendLineNotification(message);
}
}
このコードでは、イベントの開始時間を新たに取得し、メッセージに追加しています。これにより、「予定: イベント名(日付)」の形式でLINEに通知されます。