21
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

今何週目?LINEBotとGoogleカレンダーを繋げて1年間の中でいま何週目かを知れるようにした話。

Last updated at Posted at 2022-03-23

こんにちは。

今回はLINEBotとGoogleカレンダーAPIを使用して、
52週MDのうち今何週目なのかを知れるものを作りました。

ちなみに私は某小売業で働いております。
52週MDとは、【52週マーチャンダイジング】の略で
1年間を週単位にして、「今週(第〇週)は何を売り込むのか」を計画・実施するものです。 

パートさんから無茶ぶり。今何週目かすぐわかるもん作って!

小売業あるあるかと思いますが、1年間52週のうち、いま何週目かわからなくなるんです。
商品調達バイヤーから〇週はこれ売って!と言われるのですが、
いま何週目やねん!!とそのパートさんはいつも思うらしく、私を頼ってきました。

パートさん:「なぁ、すぐに今何週目かわかる方法ない?
    私:「店長とかマネージャーに今何週?って聞いたらどうですか?
パートさん:「そんなん知りたいときにすぐ近くにおらへんやん!
       自分ですぐに知りたいねん

ごもっとも・・・
てことで、パートさんの依頼に応えるべく、頑張ってみることにしました(笑)

一旦、作れたもの

LINEBot写真.jpg

こんな感じに「何週目ですか?」と聞くと「3週目です」と
返信が返ってくるものができました!

実行環境

  • JavaScript
  • Node.js

参考にした記事

作成したコード

実際に作成したコードはこちら
'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でも同じようなことが出来ないか挑戦してみたいと思います。

まとめ

はっきり意見を言ってくれる頼れるパートさんがいてくれたことで
今後の課題がはっきりとわかりました。
もっともっと修正して、パートさんが満足できるものを
作りたいと思います。

最後まで読んでいただき、ありがとうございました。

21
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?