iPaaSとLINEBot 行動履歴を記録する手間を省きたい！！

##コロナ禍において、毎日行動履歴を残し、週１回上司へ報告！
コロナ感染拡大防止の為、自社では、毎日行動履歴を残して、週１回上司に報告しております。
正式な報告フォーマットはなく、オンラインMTGの画面共有にて、上司に週１回報告する形式。
近くのスーパーや外出した際は、必ず忘れないように、携帯に毎日記録し、次の日、Excelに転記して管理しております。

##この手間を省けないかな？？
<font color="RED">**「この手間省きたいなぁ」「携帯で連絡を送ったら、自動で転記してくれるツールなどないかぁ」**</font>と日々感じておりました。そんな時、<font color="Black">**「GooglespreadシートやGoogleドキュメントが使えるのではないか？」**</font>と思い、携帯にインストール！！！
<font color="Black">**「これで外出時もここに転記すれば、そのまま使えるぞ！」**</font>と思いましたが、携帯端末で、Googlespreadシートに日頃の行動履歴を残すのが、見づらく、非常にやりづらい。
その為、結局携帯メモに残すか、妻にLINEで外出先を送付し、次の日にPCに転記するかたちに戻りました。
<font color="blue">**なんとが出来ないかな、、、、、、、**</font>

##解決する為に、こんなものを制作してみました！！
<iframe width="560" height="315" src="https://www.youtube.com/embed/2crbD7CShK8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

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

##手順概要、目次
①LINE BOT作成
②ソースコードをコピペ
③Stein API連携(参考記事、zennメモもつけてます)
④IFTTT作成
⑤IFTTT(Location、LINEを連携)

##開発環境①
https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d

##開発環境②
<details><summary>ソースコード　<font color="Red">**(クリックで表示)**</font></summary><div><br><br>

```js
'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);
  }
  // シート名`シート1`の`Message`列に、LINE Botに送信したメッセージを書き込む。
  await store.append("シート1", [
    {
      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サーバーを実行中です…`);
```
</div></details>

##開発環境③
API　URLを入手する！
SheetURLが転記されるGooglespreadシートになります！

https://dashboard.steinhq.com/dashboard/apis/details/618f9329c582292380b4c632

##参考記事
https://qiita.com/masuraoProg/items/efaa6397d2d5409c968b

https://zenn.dev/hawks/scraps/cf652d59b4f527

##IFTTT作成(こちらの記事を参考)
https://qiita.com/tkyko13/items/bdfee3416792737fd48d

##IFTTT環境構築でこんな仕組みも連携させてみた！
<font color="RED">**自宅周辺から出ると、LINEに通知が来るシステム**</font>
「location」を検索し、エリアを出るを選択！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793863/4c98b51e-252f-469e-8760-154ce8ab1c52.png" width=40%>

自宅近くを選択！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793863/633e223f-f9a9-0b8c-e832-b9ffcd413a6d.png" width=40%>

自宅近くではないですが、こんな感じです！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793863/5bb8e53f-d4ae-eef6-38f2-26609e16fd01.png" width=40%>

LINEと連携！！
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793863/3a4010d9-6520-c6a2-5adb-8f2271fba1f1.png" width=40%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1793863/8c1247e0-f810-a341-b64d-09566a71f9ae.png" width=40%>


##使ってみて
3人の方にQRコードをLINEで撮影して頂きまして、使って頂きましたが、
<font color="RED">**「Googlespreadシートにもっと見やすい様に落とし込めるようにして欲しい」**</font>という声や<font color="RED">**「より業務に特化した仕組みを制作できると良い」「セキュリテイ上が課題ある」**</font>という声を頂きました。
IFTTTに関しては、友人からは、<font color="RED">**「原中さんお買い物のツールの方が欲しかったという」**</font>声を頂きました。
確かに今のセキュリティ規定ですと、Googlespreadシートを活用し、クラウド上にデータを保管する際は、事前にセキュリテイチェックを行い、申請した上で実務に活用できるというステータスになっております為、そこは今後の課題だと思っております。
より実現場で使える仕組みに仕上げていきたいと思っております。

##クラウドファンディングに挑戦します！！
https://camp-fire.jp/projects/529459/preview?token=45tsjeej


<iframe width="560" height="315" src="https://www.youtube.com/embed/UjTWCB_Frx4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>