今回は「GAS」を使って「LINE Bot」を作成していきます!
「スケジュールとコメントすると、一日のスケジュールが確認できる」LINE Botを作成していきます。
LINE Botを作成するための手順は以下のようになります。
- LINE Developersへのログイン
- プロバイダー作成
- GAS(Google Apps Script)の準備
- Googleカレンダーにスケジュールを入力
- LINEでGoogleカレンダーのスケジュールを取得できるか確認
実際に作成したLINE Botは以下の画像のようになります。
・実際のカレンダーに登録されているスケジュール
LINE Developersへログイン
ますはLINE Developersにログインしていきます。
以下の手順に沿ってログインしていきましょう。
まずは右上のログインボタンをクリックします。
今回はLINEアカウントでログインを選択します。
メールアドレスかQRコードでログインすることができます。
QRコードでログインしていきます。
表示されたQRコードをスマホ側で読み込んでいきましょう。
ログインすることができたら、まず日本語表示に切り替えておきます。
英語表示でも問題ない方はそのまま進めていただいても問題ないです。
※この記事の中では、日本語表示に切り替えて進めていきます。
プロバイダー作成
ログインすることができたら、プロバイダーを作成していきます。
作成のボタンをクリックしましょう。
プロバイダー名を入力して作成ボタンをクリックしましょう。
「Messaging API」を選択しましょう。
必須項目になっている箇所を入力し、作成ボタンをクリックしましょう。
- チャネルの種類(自動入力)
- プロバイダー(自動入力)
- チャネル説明
- 大業種
- 小業種
- メールアドレス(自動入力)
- LINEアカウント利用規約(チェック)
- LINEアカウントAPI利用規約(チェック)
- チャネルアイコン
- プライバシーポリシーURL
- サービス利用規約URL
チャネルの作成ができたら、Messaging API設定をクリックしましょう。
Messaging API設定をクリックしたあと、画面をスクロールすると一番下にチャネルアクセストークンがあります。
「発行」のボタンがありますのでクリックしましょう。
表示されたアクセストークンはメモしておきましょう。
※後ほど使用します。
GASの準備
GAS(Google Apps Script)でコードを記述していきます。
まず「Googleドライブ」にアクセスしましょう。
左上の「新規」ボタンを押し、「その他」から「Google Apps Script」を選択しましょう。
上記の画面が表示されていればOKです。
今回コードは記載しますが、内容に関しては細かく解説はしません。
気になる方は、ご自身で調べてみましょう。
※コードはあくまで一例ですので、参考程度に使っていただければと思います。
const ACCESSTOKEN = "自身のチャネルアクセストークンを入力"; // ①
const URL = "https://api.line.me/v2/bot/message/reply";
function doPost(e) {
let events = JSON.parse(e.postData.contents).events;
events.forEach(function(event) {
if((event.type == "message") && (event.message.type == "text")) {
reply(event);
}
});
}
function reply(event) {
const calenderID = CalendarApp.getCalendarById("自身のカレンダーIDを入力する"); // ②
const myEvents = calenderID.getEventsForDay(new Date());
const messageText = event.message.text === "スケジュール"
// スケジュール以外の文字が送信された場合の処理
if(!messageText){
UrlFetchApp.fetch(URL, {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + ACCESSTOKEN,
},
"method": "post",
"payload": JSON.stringify({
"replyToken": event.replyToken,
"messages": [{
"type": "text",
"text": "「スケジュール」と入力してください",
}],
}),
});
}
// "スケジュール"と送信された場合、カレンダーに予定が1つもなかった場合の処理
if(myEvents.length > 0){
var message = "";
for(let i=0; i<myEvents.length; i++){
let title = myEvents[i].getTitle();
let start = Utilities.formatDate(myEvents[i].getStartTime(), "JST", "HH:mm");
let end = Utilities.formatDate(myEvents[i].getEndTime(), "JST", "HH:mm");
message += `\n■ 予定${i+1}\n⏰ ${start}~${end}\n⭐【${title}】\n`
}
UrlFetchApp.fetch(URL, {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + ACCESSTOKEN,
},
"method": "post",
"payload": JSON.stringify({
"replyToken": event.replyToken,
"messages": [{
"type": "text",
"text": message,
}],
}),
});
}else{
UrlFetchApp.fetch(URL, {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + ACCESSTOKEN,
},
"method": "post",
"payload": JSON.stringify({
"replyToken": event.replyToken,
"messages": [{
"type": "text",
"text": "本日予定はありません",
}],
}),
});
}
}
①には、LINE Developersで発行した「チャネルアクセストークン」を入力しましょう。
②には、Googleカレンダーの「カレンダーID」を入力しましょう。
カレンダーIDの取得方法は以下になります。
Googleカレンダーにアクセスし、マイカレンダーから「設定と共有」を選択しましょう。
「カレンダーの統合」を選択するとカレンダーIDが表示されます。
コピーしてコードに貼り付けましょう。
記述することができたら保存しておきましょう。
次にデプロイをしていきます。
デプロイのボタンから「新しいデプロイ」をクリックしましょう。
歯車のマークから「ウェブアプリ」を選択します。
- 説明
- アクセスできるユーザー
上記を設定し、デプロイしましょう。
アクセスできるユーザーは全員にしておきましょう。
デプロイが完了したら、URLをコピーしておきましょう。
※デプロイ時にアプリの承認を求められることがあります。アプリの承認の方法は別の記事で紹介しますのでそちらの記事を参考にしてください。
LINE Bot挙動確認
デプロイしたアプリのURLをLINEのチャネルに結びつけていきます。
LINE DevelopersのMessaging APIの設定内に「Webhook設定」があります。
編集ボタンを押し、デプロイしたアプリのURLを貼り付けましょう。
貼り付けたら更新をクリックしましょう。
「検証ボタン」をクリックし「成功」が表示されるか確認しておきましょう。
Webhookの利用もONの状態にしておきましょう。
最後にスマートフォンでQRコードを読み取り、実際の挙動を確認してみましょう。
問題なくカレンダーの情報を取得することができたでしょうか。
今回は、GASを使用してLINE Botの作成をしていきました。
設定が様々あったので難しく感じることがあったかと思います。
ぜひご自身のBotを作成してみてください。
この記事が参考になれば幸いです。
最後までご覧頂きありがとうございます。