こんにちは。
今回はLINEBotとGoogleカレンダーAPIを使用して、
52週MDのうち今何週目なのかを知れるものを作りました。
ちなみに私は某小売業で働いております。
52週MDとは、【52週マーチャンダイジング】の略で
1年間を週単位にして、「今週(第〇週)は何を売り込むのか」を計画・実施するものです。
パートさんから無茶ぶり。今何週目かすぐわかるもん作って!
小売業あるあるかと思いますが、1年間52週のうち、いま何週目かわからなくなるんです。
商品調達バイヤーから〇週はこれ売って!と言われるのですが、
いま何週目やねん!!とそのパートさんはいつも思うらしく、私を頼ってきました。
パートさん:「なぁ、すぐに今何週目かわかる方法ない?」
私:「店長とかマネージャーに今何週?って聞いたらどうですか?」
パートさん:「そんなん知りたいときにすぐ近くにおらへんやん!
自分ですぐに知りたいねん」
ごもっとも・・・
てことで、パートさんの依頼に応えるべく、頑張ってみることにしました(笑)
一旦、作れたもの
こんな感じに「何週目ですか?」と聞くと「3週目です」と
返信が返ってくるものができました!
実行環境
- JavaScript
- Node.js
参考にした記事
-
LINEBOTからGoogleカレンダーを取得する
↑こちらの記事はJavaScriptを使用していない記事だったので、大体の実装の流れと
実装前の準備内容を把握するために使用。 -
googleカレンダー情報をLINEで取得&送信
↑こちらも実装の流れを把握するために使用。 -
node.jsでGoogleカレンダーを操作する方法。
↑こちらはGoogleカレンダーAPI取得のために使用。
作成したコード
実際に作成したコードはこちら
'use strict';
const express = require('express');
const line = require('@line/bot-sdk');
const PORT = process.env.PORT || 3000;
// Messaging APIを利用するための鍵を設定します。
const config = {
channelSecret: '*******',
channelAccessToken: '*******'
};
const client = new line.Client(config);
async function handleEvent(event) {
if (event.type !== 'message' || event.message.type !== 'text') {
return Promise.resolve(null);
}
// ユーザーにリプライメッセージを送ります。
/*************************
sample.js
*************************/
// ----------------------
// パッケージのインスタンス生成
// ----------------------
var Calendar = require('node-google-calendar'),
config = require('./credentials/calendar-config'),
calId = config.calendarId.myCal;
var cal = new Calendar(config);
// ----------------------
// カレンダーイベントの取得
// ----------------------
// 取得する対象期間を指定
// timeMinからtimeMaxの間のカレンダーイベントが取得される
var params = {
timeMin: '2022-03-10T06:00:00+09:00',
timeMax: '2023-08-31T06:00:00+09:00',
}
const calEvents = await cal.Events.list(calId, params);
console.log(calEvents[0].summary);
if (event.message.text == '何週目ですか?') {
// 3週目です、を返す
return client.replyMessage(event.replyToken, {
type: 'text',
text: calEvents[0].summary
});
} else {
// 聞き方を間違えてますよ!など
return client.replyMessage(event.replyToken, {
type: 'text',
text: "聞き方間違えてます!\n「何週目ですか?」と聞いてください。"
});
}
/*
cal.Events.list(calId, params)
.then(calEvents => {
console.log(calEvents[0].summary);
return client.replyMessage(event.replyToken, {
type: 'text',
text: calEvents[0].summary
});
})
.catch(err => {
console.log(err.message);
});
*/
}
// ここ以降は理解しなくてOKです
const app = express();
app.get('/', (req, res) => res.send('Hello LINE BOT! (HTTP GET)'));
app.post('/webhook', line.middleware(config), (req, res) => {
if (req.body.events.length === 0) {
res.send('Hello LINE BOT! (HTTP POST)');
console.log('検証イベントを受信しました!');
return;
} else {
console.log('受信しました:', req.body.events);
}
Promise.all(req.body.events.map(handleEvent)).then((result) => res.json(result));
});
app.listen(PORT);
console.log(`ポート${PORT}番でExpressサーバーを実行中です…`);
まだまだ修正の余地あり!ここ直したい!
今はまだGoogleカレンダーAPIとLINEBotだけを繋げただけなので・・・
-
何週目?と打ち込むと今日のスケジュールを返信されるようにしたい・・・
ちなみに今は、何週目?と聞いても3週目としか返信ができません。 -
〇週目と返信があるだけでなくToDoリストとかも一緒にわかるようにしたい・・・
例えば、「今日は週の切り替え日なのでPOPを外しましょう!」と返ってくると
今日すべきことがわかりやすく、より実用的になると思います。
もっと頑張らなければ・・・
パートさんにお披露目!(超辛口FBもらったよ。)
てことでパートさんにFBもらいました。
パートさんからのFB
私:「LINEで今何週かわかるものを作ってみましたが、イメージと合ってますか?」
パートさん:「合ってる!正解!でもこれシンプルすぎ!
もっと絵文字とか使って可愛くして!あんたと一緒で不愛想あかん!
あと、その週に売り込むものとか(特に売らないと怒られるもの)とか
一緒に返信来るようにして!あと、今4週目やからこれ間違ってんで!」
さすが優秀なパートさんだけあって、文句多いし、痛いところつく・・・
真摯に受け止めて改善しますとしか言いようがない。
なんかもう少し褒めてほしいと思ったので、新たにFBもらいました。
【番外編】お父さんからのFB
ただただ甘やかしてほしいがために、お父さんに作ったものを見てもらいました。
私:「お父さん、このLINE使ってみて~」
お父さん:「いやLINEは中国では使えんきん」
ちなみにお父さんは中国在住。中国ではLINEが使えないことをてっきり忘れていました。
てことで、動画を送ってみてもらうと
お父さん:「よく頑張った!でもお父さんならごみ捨ての日教えてくれるものがほしい!
ごみ捨ての日忘れてお母さんから怒りメールくるけん。」
確かによくお母さんが怒ってた。というよりキレてた!(笑)
なるほど、こんな応用方法もあるのか気づかされました。
KakaotalkやWeChatでも同じようなことが出来ないか挑戦してみたいと思います。
まとめ
はっきり意見を言ってくれる頼れるパートさんがいてくれたことで
今後の課題がはっきりとわかりました。
もっともっと修正して、パートさんが満足できるものを
作りたいと思います。
最後まで読んでいただき、ありがとうございました。