業務改善の一歩～ChatGPTとGASが支える引継ぎ連絡Bot～

みなさんお疲れまです。スーパーで夜間の管理者として働くうっちーです。

今回はChatGPTにプログラムを書いてもらい、Google Apps Script（GAS）を駆使してLINEBot作成し、Google Spread Sheetで作成した引継ぎ連絡シートに転記してくれるBotを作ってみました。
この記事では、どのようにGASを駆使してLINEBotを作り、Google Spread Sheetで作成した引継ぎ連絡シートに転記してくれるBotを生み出したか、そしてChatGPTの力をどこで借りたのかも紹介していきます。
デジタルの扉を開け、新たな可能性に挑戦する姿勢を共有できたら嬉しいです。
# 作成した背景
今回作成した背景は、一緒に働く仲間にヒアリングをした際に、見えてきた日々の業務で起こる引継ぎ漏れという課題を解決するためです。
引き継ぎ漏れは業務の混乱を招く大きな課題です。
口頭やメモ書きだけでは確実な共有が難しく、伝達の不確実性が生じやすい状況です。
これによって、思いがけない問題が生じ、スムーズな業務が阻害されることがあります。
ノートに記入して伝える方法もありますが、『書き忘れた！』とあとから思い出す場合もあります。
書き忘れた場合でも、思い出した際にLINEが使える環境であれば、引継ぎ連絡できるツールを作成してみました。

# 完成動画はこちら
https://x.com/u_sh00ta/status/1720412258122252765?s=20

# 使用するツール

:::note info
1.[ChatGPT](https://chat.openai.com/)
2.Google Spread Sheet
3.Google Apps Script（GAS）
4.[LINE Developersアカウント](https://developers.line.biz/ja/?status=success)

:::

## ChatGPTにやってもらったこと
まずこちらのプロンプトを伝えました。
![スクリーンショット 2023-11-04 070122.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535733/48af8178-bef1-0f7f-8b50-2e9037f33017.png)
回答はこちら
![スクリーンショット 2023-11-04 071150.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535733/005bb12f-f062-e702-3228-858ed1e561ea.png)

<details><summary><font color="Green"><b>ChatGPTが書いてくれたプログラムはこちら</b></font></summary>

```html:ChatGPTが書いてくれたJavascript
const CHANNEL_ACCESS_TOKEN = 'ここにあなたのChannel Access Tokenを入力';

function doPost(e) {
  const data = JSON.parse(e.postData.contents);
  const replyToken = data.events[0].replyToken;
  const messageText = data.events[0].message.text;

  // スプレッドシートに書き込み
  writeToSpreadsheet(messageText);

  // LINEに返信
  replyToLINE(replyToken, 'データを入力しました。');
}

function writeToSpreadsheet(message) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow() + 1;
  sheet.getRange(lastRow, 1).setValue(message);
}

function replyToLINE(replyToken, message) {
  const url = 'https://api.line.me/v2/bot/message/reply';
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
  };

  const data = {
    replyToken: replyToken,
    messages: [
      {
        type: 'text',
        text: message,
      },
    ],
  };

  const options = {
    method: 'post',
    headers: headers,
    payload: JSON.stringify(data),
  };

  UrlFetchApp.fetch(url, options);
}
```
</details>
メッセージを送信するとスプレッドシートに書き込みしてくれました。

![スクリーンショット 2023-11-04 071841.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535733/84353635-f9cd-975b-4885-4e3af9f70fed.png)

ただ、送信したメッセージがA列にすべて入ってしまっています。
やりたいことは送信したメッセージが
担当者（A列）内容（B列）日付（C列）それぞれにを入力される。
日付は自動で入力してほしい。
もう一度プロンプトを伝えてみます。
![スクリーンショット 2023-11-04 073406.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535733/346d491c-5643-9d24-6ea9-8da7de294594.png)
<details><summary><font color="Green"><b>ChatGPTが書いてくれたコードはこちら</b></font></summary>

```html:ChatGPTが書いてくれたJavascript2
const CHANNEL_ACCESS_TOKEN = 'ここにあなたのChannel Access Tokenを入力';

function doPost(e) {
  const data = JSON.parse(e.postData.contents);
  const replyToken = data.events[0].replyToken;
  const messages = data.events[0].message.text.split('\n');

  // 名前と内容を取得
  const name = messages[0];
  const content = messages.slice(1).join('\n');

  // スプレッドシートに書き込み
  writeToSpreadsheet(name, content);

  // LINEに返信
  replyToLINE(replyToken, 'データを入力しました。');
}

function writeToSpreadsheet(name, content) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow() + 1;

  // 名前をA列に、内容をB列に書き込む
  sheet.getRange(lastRow, 1).setValue(name);
  sheet.getRange(lastRow, 2).setValue(content);

  // 日付をC列に自動的に入力する
  const formattedDate = Utilities.formatDate(new Date(), "JST", "MM/dd");
  sheet.getRange(lastRow, 3).setValue(formattedDate);
}

function replyToLINE(replyToken, message) {
  const url = 'https://api.line.me/v2/bot/message/reply';
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
  };

  const data = {
    replyToken: replyToken,
    messages: [
      {
        type: 'text',
        text: message,
      },
    ],
  };

  const options = {
    method: 'post',
    headers: headers,
    payload: JSON.stringify(data),
  };

  UrlFetchApp.fetch(url, options);
}
```
</details>

![スクリーンショット 2023-11-04 073752.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535733/83efad4d-7779-8901-4b1c-79cbd61fc497.png)
実現したかったことができました！

# まとめ
今回はプログラムが書けない私がChatGPTにGoogle Apps Script（GAS）に書くプログラムを書いてもらい、Google Spread Sheetで作成した引継ぎ連絡シートに転記してくれるBotを作成するため、ChatGPTにプログラムを書いてもらい、Google Apps Script（GAS）を駆使してLINEBOT作成することができました。
引継ぎ連絡を忘れたと気づいた際でも、こちらのツールを使用すれば、LINEが使える環境であれば、引継ぎ連絡できるようになります。
そして今回はまだできておりませんが、通知機能を付けることで、確認漏れを減らせると考えております。

ChatGPTの凄さを感じたと同時に、プロンプトがいかに大事なのかを知るきっかけにもなりました。
余った時間でChatGPTのプロンプト作成について調べました。
これからChatGPTを活用していくにあたって参考になる記事を見つけましたので、紹介させていただきます。



https://note.com/kamiumi_lab/n/n52aa27224861

これからもChatGPTを活用して、業務改善に努めていこうと思います。
今回も最後まで、読んでいただきありがとうございました！

https://twitter.com/u_sh00ta