20
11

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.

「失念しておりました」をゼロへ!LINE BotとGoogleカレンダーをつなげてタスク管理を楽に!

Last updated at Posted at 2021-11-22

五月雨式に訪れるタスク
漏れが出ようもんならそれはもうカオス
伝えた聞いていないのバトル

アナログからデジタルへの進化
により上司のお怒りも沈下
試されるぜ俺の真価

##失念しておりました。
私は普段、居酒屋を運営する企業のマーケティングを仕事としています。

細かなタスクが立て続けに発生し、タスク整理が追い付かずということが時たま訪れます。
そのような時に、頼まれていたタスクに漏れが出てしまいます。

会議中、作業中、ランチ中、移動中、休憩中に、メールで、Talknote(社内共有ツール)で、LINEで、電話で、口頭でと、いつでもどこでも新たなタスクは発生します。

普段のタスク管理のルーチンは、

①新たなタスクが発生する。
②PCがある場合はGoogleカレンダーにタスクを入れて漏れないよう管理。
③移動中やランチ等でPCが使いにくい場合は、とりあえずLINEのKeepメモを使ってメモをして、後程優先順位を決めながらGoogleカレンダーにタスクを入れる。

といった感じですが、

・スマホからGoogleカレンダーを使うことも可能だが、スマホでフリック入力できずに連打派の私は、スマホをなるべく操作したくない。
・メモ程度にLINEのKeepメモを使っているが、後々Googleカレンダーに転記するのがめんどくさかったり、忙しいとKeepメモに入れたことすら忘れる。

という問題があり、最小限の労力でタスク管理が出来ないかなぁと。

そんなことを思っていると、プログラミングを勉強し始めて出会ったLINE BotとかIntegromatを使えば、LINEに入力したテキストをGoogleカレンダーに自動転記することができて、タスク管理しやすくなるかも!と閃きました。

というわけで、今回はLINE BotとIntegromatを使って、PCが使いにくい場合でもGoogleカレンダーに楽に予定を入れられるものを作成し、タスク漏れの撲滅を図ろうと思います。

##案外簡単に完成!

あー、もう、素敵すぎる。。。
なぜもっと早くIntegromatに出会わなかったんだ。。。

##仕組み
:::note info
①作成したLINE Botにタスク内容を入力する。(リプライメッセージ)
②入力したテキストがGoogleスプレッドシートのMessage列に転記される。
③GoogleスプレッドシートのMessage列に新しく入力されたら、Googleカレンダーの予定に追加される。
:::

Googleスプレッドシートを接着剤にして、LINE BotとGoogleカレンダーをつなげる感じです。

##環境
Visual Studio Code v1.60.2
Node.js v16.10.0
npm v7.21.1
ngrok 2.3.40

##LINE Botに入力したテキストをGoogleスプレッドシートのMessage列に転記させる部分
まず、上記仕組みの①②をVSCodeで書きます。

'use strict';

const express = require('express');
const line = require('@line/bot-sdk');

// Steinを利用するための準備
const SteinStore = require('stein-js-client');
const store = new SteinStore('SteinのAPI URLを記載');

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);
  }

  // シート名`task`の`Message`列に、LINE Botに送信したメッセージを書き込む。
  await store.append("task", [
    {
      Message: event.message.text,
    }
  ]);

  // ユーザーにリプライメッセージを送ります。
  return client.replyMessage(event.replyToken, {
    type: 'text', // テキストメッセージ
    text: event.message.text // ← ここに入れた言葉が実際に返信されます
    // event.message.text には、受信したメッセージが入っているので、それをそのまま返信しています
  });
}

// ここ以降は理解しなくて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サーバーを実行中です…`);

忘れず変更
 ・SteinのAPI URL
 ・チャネルシークレット
 ・チャネルアクセストークン

##GoogleスプレッドシートのA列に新しく入力されたらGoogleカレンダーの予定に追加される部分
次に、上記仕組みの③をIntegromatでシナリオ作成します。
integromat
詳しくはこちらから:[イテレーターとアグリゲーターの使いかた]
(https://integromat.ethical.works/contents/how-to-use-iterator-array-aggregator-in-integromat-scenarios)

ポイントは、終日予定に転記されるようにしたことです。LINE Botから送った分が一目で分かり、優先順位を決めながら時間ごとの予定に割り振る時に便利です!
Integromatで初めてGoogleカレンダーを使用しましたがノーコードかつ、テンプレートを使って簡単にシナリオ作成出来るところが最高ですね!LINE Botの部分を加味しなければ数分でシナリオ作成出来ました!

ちなみに、今回はテンプレートを使用してシナリオ作成したので、IteratorとArray Aggregatorが入っていますが、なくても問題なく動きました。
integromat

こうして、最小限の労力でタスク管理が出来るようになりました!

##同じ部署の同僚にヒアリング
こんなの作ってみたけど、どうかなと聞いてみたところ、

私はすでに結構Googleカレンダー活用してるので、そんなにそれいい!とはならないですけど、そうゆう習慣ない人は便利かもですね!

ちょっとがっかり(まぁ、とりあえず自分の役に立つからいっか。)

TさんとかYさんとか打ち合わせ続きの人だったら喜ぶかもしれないですね!

たしかに!

しばらく自分で使ってみて、より使い勝手よくしてから普及させていきたいと思いますー!

LGTMやご意見ご感想のコメントをいただけると嬉しいです!
最後まで読んでいただき、ありがとうございました!

20
11
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
20
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?