##はじめに
最近、LineBotの作り方を勉強したいですw。
ここでは、他者のブログから学んだことをやりました。作り方とコードを再整理しました。
今回はLINE APIの一つであるMessaging APIとGoogle Apps Scriptを使って、LINE経由でgoogleカレンダ上の予定を自動で通知させます。
1.LineBotを作成する
LINE公式アカウント(旧ライン@)の作り方 を参照してください。
2.GoogleカレンダーIDを取得する
Googleカレンダー【設定】 → 【マイカレンダーの設定】 → 【カレンダーの統合】
ここまで通知Botに必要な項目3つすべてを取得しました。
Your user ID
チャンネルアクセストークン
カレンダーID
3.イベント通知LineBotの実装
Google Apps Scriptを新規作成して、以下のコードを貼り付けて、access_token
user_id
calendar_id
の値を書きます。
// LINE Messaging API: Channel access token
const access_token = '';
// LINE Your user ID
const user_id = '';
// Set your google calendar ID
const calendar_id = '';
function getGoogleCalendar() {
var today = new Date();
var myCalendar = CalendarApp.getCalendarById(calendar_id);
var myEvents = myCalendar.getEventsForDay(today);
var message = [];
if (myEvents.length == 0) {
message.push('There are no events today');
} else {
message.push('There are ' + myEvents.length + ' events today\n');
myEvents.forEach(function (event) {
var eventStartTime = event.getStartTime();
var eventEndTime = event.getEndTime();
eventStartTime = Utilities.formatDate(eventStartTime, 'JST', 'HH:mm');
eventEndTime = Utilities.formatDate(eventEndTime, 'JST', 'HH:mm');
if (event.getTitle()) {
message.push(
'\n' +
event.getTitle() +
'\n' +
'今日 from ' +
eventStartTime +
' to ' +
eventEndTime +
'\n'
);
}
if (event.getDescription()) {
message.push(event.getDescription() + '\n');
}
});
message.push('https://calendar.google.com/calendar/u/0/gp?hl=ja');
}
message = message.join('');
return postMessage(message);
}
// method for post message to LINE
function postMessage(message) {
// var url = 'https://api.line.me/v2/bot/message/push'; // Send broadcast message API (all following users without user_id)
var url = 'https://api.line.me/v2/bot/message/broadcast'; // Sends a push message to a user, group, or room API
var headers = {
'Content-Type': 'application/json; charset=UTF-8',
Authorization: 'Bearer ' + access_token,
};
var postData = {
to: user_id,
// to: user_id,
messages: [
{
type: 'text',
text: message,
},
],
};
var options = {
method: 'post',
headers: headers,
payload: JSON.stringify(postData),
};
return UrlFetchApp.fetch(url, options);
}
注:全てのフォロワーに送りたい場合、対象IDがいらないので、53と61行を代わりに52と62行のコードを使える。
4.実行結果確認
5.自動的に投稿を実行される
6.Source Code (GitHub)
参照サイト