LINE×GAS｜クイックリプライを使って予定を決める

# ゴール
僕は毎週、友達と電話をしています。
でも、その予定を毎週きめるのがめんどくさかったり、忘れたり、なんとなく聞きづらかったりするんですよね。ということで、代わりに聞いてくれるBotをLINE　MessageAPIで作りました。

と言いたいところですが、実はLINEグループでの動作にエラーが発生していて、完成はしてません。でも、とりあえずここまでの成果を整理します。（GASとLINEの連携に詳しい方、ぜひお助けください。。。。）

**▼LINE Notifyを使ったバージョンはこちら**

https://qiita.com/katakata_/items/e12b836faf8ffa641864


# 未完成だけど、途中までの成果物
## LINE
LINE　Botが個人あてに「電話いつがいい？」という質問と共に、クイックリプライ（月〜日のボタン）が表示
![IMG_6102.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687068/4f4d0847-0499-72b9-13fe-a901cc6ae3ca.jpeg)

ボタンをタップしたら、そのメッセージが送信される。
![IMG_6103.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687068/0f60fca1-0c40-061b-d174-92fd58aec98d.jpeg)

## GAS
### コード｜グループIDを取得する
```js:getGroupID.gs
function doPost(e){
 var json = JSON.parse(e.postData.contents);
 var UID = json.events[0].source.userId;
 var GID = json.events[0].source.groupId;
  
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 sheet.getRange(1,1).setValue(GID);

}
```



### コード｜クイックリプライボタンを設定したメッセージを送る

```js:ask_day_of_week.gs
/*
クイックリプライボタンを設定したメッセージを送る
———————————–*/
function pushmessage_quick_reply() {
	/* スクリプトプロパティのオブジェクトを取得 */
	const prop = PropertiesService.getScriptProperties().getProperties();
 
	/* クイックリプライボタンを設定したメッセージを送る */
	UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
		'headers': {
			'Content-Type': 'application/json',
			'Authorization': 'Bearer' + ' '+ prop.TOKEN, // スクリプトプロパティにトークンは事前に追加しておく
		},
		'method': 'POST',
		'payload': JSON.stringify({
			"to": prop.DEBUGID, // スクリプトプロパティに送信先IDは事前に追加しておく　→https://tonari-it.com/gas-line-bot-friend-token/#toc2
			"messages": [
				{
        "type": "text", // ①
        "text": "電話いつがいい？",
        "quickReply": { // ②
    "items": [
      {
        "type": "action", // ③
        "action": {
          "type": "message",
          "label": "月",
          "text": "月"
        }
      },
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "火",
          "text": "火"
        }
      },
      {
        "type": "action",
        "action": {
          "type": "message",
          "label": "水",
          "text": "水"
        }
      },
            {
        "type": "action",
        "action": {
          "type": "message",
          "label": "木",
          "text": "木"
        }
      },
            {
        "type": "action",
        "action": {
          "type": "message",
          "label": "金",
          "text": "金"
        }
      },
            {
        "type": "action",
        "action": {
          "type": "message",
          "label": "土",
          "text": "土"
        }
      },
            {
        "type": "action",
        "action": {
          "type": "message",
          "label": "日",
          "text": "日"
        }
      }
    ]
  }
}	],
			"notificationDisabled": false // trueだとユーザーに通知されない
		}),
	});
}
```

### スクリプト プロパティ
![クイックリプライくん_-_プロジェクトの設定_-_Apps_Script.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/687068/ce38e1e0-4e98-0d50-b265-67ec7f6d04ff.png)


# 未完成となった理由
グループIDを取得して、プロパティ`DEBUGID`に値を登録しても、下記エラーが発生してメッセージが送られない。
（個人LINE宛にはメッセージを送信できる。）

```js:
Exception: Request failed for https://api.line.me returned code 400. Truncated server response: {"message":"Failed to send messages"} (use muteHttpExceptions option to examine full response)
pushmessage_quick_reply	@ テスト.gs:9
```
# LINEグループにLINEbotを招待する際の注意点
- コンソールの［Channel基本設定］ページで、［Botのグループトーク参加］オプションが有効であることを確認。
- また、**グループチャットに同時に複数のボットは参加できないことに注意。既にボットが参加しているグループまたはトークルームにボットを招待することはできません。**

▶︎[参考](https://www.line-community.me/ja/question/5a866f0040169063e88be91d
)



# 参考サイト
- グループIDの取得
    - https://cyuraharuto.com/gas-line-gid-get
- ユーザIDの取得
    - https://tonari-it.com/gas-line-bot-friend-token/#toc2
- グループLINEにメッセージを送信
    - https://cyuraharuto.com/gas-line-sendmessage/
- クイックリプライの使い方
    - https://qiita.com/cabbit/items/ce3ab43c20c5692e2115
    - https://developers.line.biz/ja/docs/messaging-api/using-quick-reply/
- グループLINEにLINEbotを追加
    - https://www.line-community.me/ja/question/5a866f0040169063e88be91d
- エラーの詳細
    - https://qiita.com/kunihiros/items/255070ba950a7ba95ae4
    - https://teratail.com/questions/311915