原材料の情報をLINE Botで送信したい。

# 倉庫整理を目的とした原材料の場所を知らせてくれるアプリを作りたい。



　こんにちは、飲食店で働くおじさんです。
 デジタル技術を身に付けたく、勉強しております。
今回、一緒に働く従業員さんからの要望で、**倉庫整理をしやすくする指標**を作ってほしいとのこと。これはデジタルの力を使って作ってみる！
いざ、製作開始！

![22768950.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656986/de4ca2f8-8fb1-8c59-6971-d0531607f66b.jpeg)


<details><summary>今回、使用したツール</summary>

・``Google Apps Script``

・``ChatGPT``

・``Google スプレッドシート``


</details>

https://www.google.com/script/start/

https://chat.openai.com/

## 今回はChatGPTにコードを書いてもって作成することにしました。
　今回の実装イメージは、LINEBotです。LINEに調べたい原材料名を入力すると
 原材料の情報が返信されるようにすること。
 まず、``スプレッドシート``に情報を入力しました。
 ![スクリーンショット (75).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656986/c9f8c1b8-eaf7-32ee-61b2-ae95ba9c6fdd.png)

**呼び出したい情報**,
<details><summary>原材料名を入力すると</summary>

呼び出したい情報は！

```rb
原材料の保管場所
原材料のロッド数
発注頻度
使用期限
開封した後の使用期限
```
</details>
情報がLINEに届くようにします。
これを見て、従業員が原材料の管理をしていきます。

## 次にChatGPTにコードを書いてもらう。
約1週間、``ChatGPT``と会話を続けいろいろ教えてもらい、

![スクリーンショット (76).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656986/172b1db4-5cb3-ee52-74b6-c10ce7092bf1.png)
![スクリーンショット (94).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656986/343d68f3-01dc-2550-e44b-e4aa59554802.png)

![スクリーンショット (77).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656986/966b4df9-e2f4-60d2-24dd-bc88471f80e3.png)

```ruby:qiita.rb
// LINE Messaging APIのアクセストークン
var ACCESS_TOKEN = 'アクセストークン';

// LINE Messaging APIの送信先URL
var LINE_ENDPOINT = '送信先URL';

// スプレッドシートURL
var SPREADSHEET_URL = 'スプレッドシートURL';

// LINEにメッセージを送信する関数
function sendLineMessage(message, userId) {
  var headers = {
    'Authorization': 'Bearer アクセストークン',
    'Content-Type': 'application/json',
  };
  var payload = JSON.stringify({
    to:'送信先ID', // 送信先のユーザーIDを指定
    messages: [
      {
        type: 'text',
        text: `お探しの物は何でしょうか?`
      },
    ],
  });
  var options = {
    'method': 'post',
    'headers': headers,
    'payload': payload,
  };
  UrlFetchApp.fetch(LINE_ENDPOINT, options);
}

// スプレッドシートから原材料情報を検索する関数
function searchMaterialInfo(materialName) {
  var sheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getActiveSheet();
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange("A2:H" + lastRow); // A列からH列までの範囲を指定
  var values = range.getValues();
  
  for (var i = 0; i < values.length; i++) {
    if (values[i][0] == materialName) {
      // H列までの情報を文字列として結合
      var materialInfo = "原材料名：" + values[i][0] + "\n保管場所：" + values[i][1] + "\n発注単位：" + values[i][2] + "\n入り数：" + values[i][3] + "\n使用期限：" + values[i][4] + "\n開封【解凍）後使用期限：" + values[i][5] + "\n使用頻度：" + values[i][6] + "\n数量限定原材料：" + values[i][7];
      return materialInfo;
    }
  }
  
  return "該当する原材料が見つかりませんでした。";
}

// LINE Botのメイン関数
function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;
  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    if (event.type == 'message' && event.message.type == 'text') {
      var message = event.message.text;
      var userId = event.source.userId;
      var replyMessage = searchMaterialInfo(message);
      sendLineMessage(replyMessage, userId);
    }
  }
}
```
上記のコードに必要な情報を入力
**LINEアクセストークン**
**LINE送信先ID**
**スプレッドシートのURL**
**返答用の回答**
をコードに入力しました。

**実行のエラーも無くなり　いざ、デプロイ！**
![スクリーンショット (80)_LI.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3656986/942e885e-7a9b-fc77-911d-51b16356f996.jpeg)

意気揚々と、アプリを開くと（動画です）

https://twitter.com/nakamori315/status/1761395279654519284

**結果、動作はしなかったです。**
このあと、再度、挑戦します。成功したら再投稿します。
是非、楽しみにしてください。