ノーコード！明日から使える飲食店向け注文システムを作るv2

# ユーザーの方の声を反映しv2に！

以前に以下でお届けしたノーコード注文システムですが、その後も問い合わせを頂くことが多く、少しバージョンアップしたのであらためて記事に起こそうとした次第です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/0fdf7d70-10af-93cc-22c9-b637abc915e0.png)


https://www.youtube.com/live/IyH8b6y3SJ8?si=Bm-EKS-BTunhxN9K


以下のアドベントカレンダー18日目の記事でもあります。

https://qiita.com/advent-calendar/2024/linedc


# 主な変更点

・商品価格を設定可能に
・スプレッドシートに売上金額などを反映（売上管理にそのまま活用できる）
・メニューの追加方法を少し簡易に
・ビジネスアカウント利用時の対応
・グループトーク内での利用に対応
・注文確認機能追加
・注文受付時のメッセージやボタンを見やすく（FlexMessageに変更）
・チャットとの併用を可能に
などなど

# ご利用いただいている主なユーザーの方（掲載時点）

今回のv2開発のきっかけにもなりました。いろいろなご要望ありがとうございます！！
是非お近くの方はお店にも行ってみてください！

https://mashandroom.org/report/4421/

https://mashandroom.org/report/4494/


# ざっくり登場人物

ノーコードと謳ってはいますが、裏ではGASを使っています。
あくまで想定する利用ユーザー（お店の方々）にとってはコードを意識しないで済むという意味です！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/2bc0ea1e-c309-eb2f-0cc0-2c9d2a2a4050.png)


流れとしては、以下のような感じです。

1. お客様側はLINEを必要とせず、GoogleFormより注文送信
1. フォームの送信をトリガーに、注文情報をスプレッドシートに記録
1. 同時にお店側にLINE通知、注文を受け付けた旨をお客様側にメール通知
1. お店側でLINE操作にて、状態に合わせて「受付完了」などの処理を実行
1. 処理に応じてお客様にメール通知
1. 注文内容はスプレッドシートに蓄積して管理できる


# やってみましょう

では。文章と図だけではやや面倒さもあるので、この記事を元にまた動画でお届けできたらと思います！


## 1. スプレッドシートとフォームの準備

#### 1. 配布用のスプレッドシートを自身のGoogleドライブにコピー

以下に配布用のスプレッドシートがあるので、自身のGoogleドライブにコピーします

https://docs.google.com/spreadsheets/d/1E16klpav2IBJCtR1gwPa0RLj2VgrQswh9pqvuAR1Og8/edit?usp=sharing

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/7635a656-73d2-986a-072c-92d40d866b6c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/1c09973e-72f9-c200-6ae3-f2be294892ee.png)

もれなくGAS（Apps Script）も付いてきます

#### 2. 注文フォームのコピー

以下を押して自身のGoogleドライブにコピーします。

https://docs.google.com/forms/d/1RehA2qDqN_8dKfFRcRUi_k_-uCbvv3b5WlsAHufndF0/copy

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/4797a462-78e0-2be6-2780-6fdfd445d49d.png)


:::note
実際に活用される際、メニュー項目にある金額表記は、メニュー名の後に ¥記号で金額を入れるようにしてください。¥記号の後ろを金額として扱っています。
:::


#### 3. フォームとスプレッドシートを紐づける

フォームを開き、回答タブにある「スプレッドシートにリンク」を押下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/e22bedc0-6d04-8c7c-47c5-f473c8f59bce.png)

「既存のスプレッドシートを選択」で、コピーしたスプレッドシートを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/ffa6b0bc-1bcc-be61-73e3-a1fc28d71e4e.png)

スプレッドシートに新しく「フォームの回答」というシートが追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/3c34a19f-7797-7a0b-758f-6168c9904f3d.png)

#### 4. フォームから送信してみる

試しに一度フォームから送信して、スプレッドシート に回答されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/7ddbef28-3373-4ad3-b20a-4a560051862f.png)

回答者が「特定のユーザー」となっていたら「管理」を押し、回答者を「リンクを知っている全員」に設定し公開します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/cee1c3f4-b5ab-b2de-e7fd-ef255ce9448e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/bfc652ae-506a-f2b2-a902-56e319954e6e.png)

公開したら「回答者へのリンクをコピー」して、フォームに送信してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/ba7b51b4-f4d1-220e-ca03-9bf89057e4e9.png)

回答が記録されればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/31db0147-83af-b25d-beeb-d634d09d7d2b.png)


#### 5. 注文シートを整える

シートの名前を「order」に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/96757cbf-c9ab-f8b5-36db-ad46abeb9b14.png)

↓

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/1aca0477-8f8c-e8ba-de7d-93c3793a54ff.png)

「_order」シートを参考に「order」シートの1行目と2行目を修正します。
具体的な修正は、列KからQに以下の項目を追加するのと、2行目をまるっと追加します。
このとき「order」シートの2行目には、サンプルで送信した回答がありますが上書きします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/aea459ba-1c9b-8604-842d-0f1dc7202233.png)

「_orderシート」と同じ状態になっていればOKです。

以上でスプレッドシート（注文管理シート）とフォーム（注文受付フォーム）の準備ができました。

## 2. GASのデプロイ

#### 1. デプロイ

以下の通りデプロイします。

スプレッドシートの拡張機能メニューから「Apps Script」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/70be0200-0123-4a66-27c1-b587864b7578.png)

以下のScriptのタブが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/1c57cf77-f5b1-75da-aad3-aead05dd7ac3.png)

右上の「デプロイ」から「デプロイを管理」から以下の通りデプロイを完了してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/ebfa87d5-da54-455b-de01-fa619ff5e031.png)

- デプロイメントの作成
- アクセスできるユーザーを「全員」にし「デプロイ」
- アクセスを承認
- アカウント選択画面にて自身のアカウントを選択
- Googleの確認画面で「Advanced」を選択
- Go to 2024_明日から使える飲食店向け注文システムを作るv2 (unsafe) を選択
- アクセス確認画面で「Allow」を選択
- デプロイが完了するので「ウェブアプリURL」をコピー（あとで使用します）


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/f4d8b3ec-7096-da27-3b20-445b698495d5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/452d0932-03b4-be09-03d5-f6078d9dba97.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/e0d5534d-8fce-4057-ce85-14fe951eb198.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/832c938f-d422-7582-ad1f-974f85e12b29.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/cedd0cc5-2e0e-1a44-6045-a9815a382c92.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/2d6dfd59-6766-a872-9c82-747ebd9f7a20.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/a4e6718d-635b-89a5-c6c6-930f7c04075d.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/90f795e4-bbc2-7a51-d41b-ded976a5e31b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/3979d74d-d5b6-389b-bf03-1b554db283f8.png)


:::note
ウェブプリURLは、以降のLINE設定においてWebhookの欄に設定します。
:::


#### 2. トリガーの設定

フォームより注文があったら、LINE側に通知が届くようにトリガーを設定します。
Apps Scriptの左側にあるメニューから「トリガー」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/e979a81c-19c0-9af7-d1a9-0ced66543df4.png)

「トリガーを追加」を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/71ccef07-d94e-7792-19a9-c84cd523d1c8.png)

以下の通り設定して保存します。

| 項目 | 設定 |
|:-:|:-:|
|実行する関数   | receivedOrder  |
| イベントの種類  | フォーム送信時  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/86ef455e-5e73-619d-8b00-3a4db87b33e7.png)

先ほど同様にアクセス許可の画面が出たら許可をします。

トリガーが作成されると以下のように1件追加されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/fc02c35c-3d25-3983-a0ce-a215df0f85ce.png)

以上でGASの設定も完了です。


## 3. LINEの設定

#### 1. LINE Official　Account Manager

LINE アカウントにログインします。
公式アカウントをこれから作成の方は、新規に公式アカウントを作成します。

https://manager.line.biz/account/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/afa44522-510f-9266-b9ed-fd2d1e5416af.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/48895a07-8bc7-59dd-031e-b2986f280cef.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/e99a16b2-0c11-996e-a54c-2517e22d1b72.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/9776af00-a6cb-606e-76b6-b9c23b2fd88a.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/c533a974-fbca-9250-0d99-d03be37adb2c.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/29807846-3e08-b0fe-3fd5-6fee0529710a.png)

アカウントの右側にある「設定」を押すと、アカウント設定画面になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/84041b69-3bab-fab7-0c40-c1d6f587a971.png)

Messaging APIを利用するを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/95e89a8f-ccaa-ce92-4d47-a4f0cc20e00d.png)


プロバイダーがなければ作成。あれば既存のプロバイダーを選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/01506388-c007-34ee-3dad-a75bd6bb3b66.png)


プライバシーポリシーのURL等は省略

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/2bcc6fc2-40e5-e85e-368c-0518d82987de.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/fa000c60-37d1-f0ae-fd9c-8333eaa68a9e.png)

MessagingAPIが有効になりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/165d6fd4-b5a8-010a-611f-84d9df362a28.png)


Webhook URL に、GASデプロイ時に表示されたウェブアプリURLを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/8e633649-1aea-c995-e8e7-b489a9ba6667.png)


応答設定メニューより、応答設定を以下の通り変更します。

| 項目 | 設定 |
|:-:|:-:|
|Webhook   |オン   |
|応答メッセージ   |オフ   |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/0aecf8aa-c33f-5a23-f874-7b87a7a5e0de.png)


#### 2. LINE Developer Consoleの設定


「その他の設定はLINE Developersから行えます。」から、または以下のリンクから LINE Developer の設定をします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/70c520e6-b539-3615-8360-24b4f23995db.png)

https://developers.line.biz/

右側にある「コンソール」よりログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/67c6a3d9-f350-7d2c-b2f8-fc50d7b918d9.png)

作成したプロバイダ内にチャネルを見つけることができるので選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/b371b514-c563-8978-b429-858185e78fb6.png)

チャネル設定の画面に遷移

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/b452e6c4-cece-ac23-3214-627e6169bb9b.png)

MessagingAPIのタブにQRコードがあるので、まずは友達追加しておきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/84d83f3b-a64d-2f06-1fcf-3726f3dd79ad.png)

続いて、チャネルアクセストークンを発行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/a2db92e5-2758-f69e-75a4-6f20f443f701.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/cf44d3fe-21eb-1fa3-c2e1-0488579e7855.png)

発行されたチャネルアクセストークンを、下図のとおりスプレッドシートに貼り付けます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/526b1ec7-3302-3469-7af6-c60b9065cadf.png)

#### 3. 接続確認

LINE Developer Console 「Messaging API設定」真ん中あたりに、Webhookの設定もオンになっていることが確認できます。検証を押して「成功」と表示されればLINEとGASの連携も完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/614d3ae6-ad23-cdc8-21b6-f25a97e7fc8a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/bb179c91-9ccf-bee5-5db2-8231efcd28f7.png)

以降、もしGASのプログラムを修正したら必ずデプロイを管理から「新しいバージョン」にてデプロイをしてください。「新しいデプロイ」でデプロイをするとURLが変わってしまいますので、その時はLINEのWebhookの設定も合わせて変更します。



#### 4. ユーザーID（グループID）を設定

登録したLINEから「通知設定」と送信します。
自動的にユーザーIDがスプレッドシートに設定され、またLINEの応答も返ってきます。最初の1回のみで特に以降は使用しません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/3b0c51b7-c6d1-426a-578d-a122ab69b50d.png)


以下の通りスプレッドシートに反映されればOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/70d95ce7-07d8-d44a-c5e5-f7ccb088f760.png)


#### グループトークに参加させるには

Official Account Manager から以下の設定をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/e670a312-1978-cf0c-0664-c9b27ddfb8f5.png)

その後、LINEにて「グループID設定」とメッセージを送信することで、スプレッドシートに反映されます。



## 4. 準備完了！注文してみましょう

これで準備が整ったので実際にお客様になってみて注文してみましょう。


#### 注文送信時のサンプル

実際に今回のフォームで注文を受け付けた際のサンプルです。


![t.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/5bdf5623-42ef-0aab-e4f4-e147a61148fa.jpeg)


![docs.google.com_forms_d_e_1FAIpQLSf6NSQK0Tp1TCsl-unHrEJh2DJ0gaNBEWNBxPD5otNqkOowKA_formResponse(iPhone 14 Pro Max) (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/d4a24fac-0e46-a491-5f28-c1f74c94153b.png)


#### フォーム送信時

LINEに注文通知が届きます。上記フォームの内容を解析し、合計金額や購入数なども通知されます。
注文内容はスプレッドシートにも記録されているので、LINE側で何か誤った操作をしても情報が消えてしまうこともありません。

![LINE_capture_758930930.697963.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/135f8340-a345-fa9a-925d-ddba85a9cb76.jpeg)


合わせて、以下のメールがお客様に自動送信されます。実際に届いていることを確認してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/a0e59f9b-ecd7-e4fd-a8c5-382e25fc2914.png)


## 3つのボタン

このサンプルでは以下のボタンを用意しています。

| ボタン | メール送信有無 |スプレッドシートの記録 |  
|:-:|:-:|:-:|
| 受付確認(再送)  | 受付確認メールを再度送信します  | 列O「処理(注文確認メール再送)」に記録 |
| 受付完了  | 受付完了メールを送信します  | 列P「処理(受付完了メール済)」に記録|
| 処理済  | なし |処理済みとして記録します  |列Q「処理(受渡し完了)」に記録|

#### 受付確認（再送）

上記の自動送信メールを再送する場合に押します。再送完了すると、以下の応答がLINEに返ってきます。

![LINE_capture_758930961.977929.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/729edbb4-8f18-e4c1-204d-e78297688fab.jpeg)


#### 受付完了

注文内容を確認できたら、「受付完了」を押すことで以下のメールがお客様に届きます。
これをもって注文確定ということにも使えますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/6a123f6b-a7ec-73af-414d-33a527cbe85d.png)

![LINE_capture_758930983.629577.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/37b0ad79-3f12-c3ed-12be-bee587bcc1cc.jpeg)


#### 処理済み

処理済みはお店側の管理上のもので、特にメール送信はしません。
スプレッドシートの状態のみ更新します。

![LINE_capture_758931041.515642.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/4c204389-6b67-97f7-9ebf-df068d6a2205.jpeg)

#### 注文の確認

注文Noを送信すると、該当の注文を表示することができるので確認にも便利です。

![LINE_capture_758931011.034143.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/6b325bdc-57f5-d0e7-9c0e-77a7975c4902.jpeg)

![LINE_capture_758931054.715596.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/aa0552e8-4768-12fc-cc62-b522dd559910.jpeg)


#### スプレッドシートでの管理

注文ごとにLINE上でどの操作をしたか？は、以下のように記録されていきます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/434305c4-de62-ddac-0f5d-c2e85ff5b60d.png)

またスプレッドシート上で合計金額なども集計されますので、管理にもご活用ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/becc4595-b949-5fe3-9ec9-4b3a5aab6c0b.png)

#### メールの設定

件名や本文は、スプレッドシートの「shop」シートで変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/119864/b86094ac-effd-927b-4d37-1c159fa2b984.png)


# カスタマイズ等

今回の記事も実際の店舗の方からご相談いただいたものをいくつか取り込んだものとなっています。実際に店舗や施設等で導入の際は以下よりご連絡ください。

https://lin.ee/bcfIb4q