この記事では、Google Apps Script (GAS) を利用して、LINE BOTで「クイックリプライ」メッセージを送信する方法を初心者向けに分かりやすく解説します。
クイックリプライは、ユーザーがメッセージに対して簡単なボタン操作で返信できるようにする機能です。これにより、ユーザー体験を向上させることができます。
公式ドキュメントはこちらです。


事前準備
実装を始める前に、以下の準備が必要です。
- チャンネルアクセストークンの取得: LINE Developersコンソールから、利用するBOTのチャンネルアクセストークンを取得してください。詳しい手順は以下の記事で解説しています。
LINE BOT開発に不可欠なMessaging APIのチャンネルアクセストークンを取得する手順を、実際の画面キャリプチャを交えて詳しく解説します。LINE Developersへの登録からプロバイダー、チャンネル作成、トークン発行までを網羅。
- ユーザーIDの取得: メッセージの送信先となるご自身のLINEユーザーIDを取得してください。手順はこちらの記事で確認できます。
Google Apps Script(GAS)を使って、LINE BOTと友だちになっているユーザーのIDを取得する方法を解説します。Webhook経由で送信されるイベント情報から、特定のユーザーを識別するための`userId`を抜き出すサンプルコードを紹介します。
実装コード
それでは、実際にGASでクイックリプライを実装するコードを見ていきましょう。
1. 定数の設定
まず、スクリプトで利用する定数を定義します。取得したチャンネルアクセストークンとユーザーIDを設定してください。
const TOKEN = 'LINEのトークンを指定(取得方法:https://arukayies.com/gas/line_bot/gettoken)';
const DEBUGID = 'LINEのユーザIDを指定(取得方法:https://arukayies.com/gas/line_bot/get-userid)';
2. クイックリプライメッセージを送信するコード
以下の関数は、指定したユーザーにクイックリプライボタン付きのメッセージを送信します。
//LINEBOTでクイックリプライボタンを設定したメッセージを送るサンプル
function pushmessage_quick_reply() {
//クイックリプライボタンを設定したメッセージを送る
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + TOKEN,
},
'method': 'POST',
'payload': JSON.stringify({
'to': DEBUGID,
'messages': [
{
'type': 'text',
'text': 'お気に入りの食べ物のカテゴリを選択してください!',
'quickReply': {
'items': [
{
'type': 'action',
'imageUrl': 'https://example.com/sushi.png',
'action': {
'type': 'message',
'label': '寿司',
'text': '寿司'
}
},
{
'type': 'action',
'imageUrl': 'https://example.com/sushi.png',
'action': {
'type': 'message',
'label': '天ぷら',
'text': '天ぷら'
}
}
]
}
}
],
'notificationDisabled': false //trueだとユーザーに通知されない
}),
});
}
このコードでは、messages配列の中にquickReplyオブジェクトを追加することで、ボタンを表示しています。各ボタンはitems配列内で定義され、labelがボタンのテキスト、textがユーザーがタップした際に送信されるメッセージになります。
3. ユーザーからの応答を処理するコード
ユーザーがクイックリプライボタンをタップすると、LINEプラットフォームからWebhook URLにリクエストが送信されます。そのリクエストを処理し、選択されたボタンに応じて異なるメッセージを返信するのが以下のコードです。
//LINEで選択したクイックリプライボタンの結果によってメッセージを分ける
function doPost(e) {
//レスポンスを取得 */
const responseLine = e.postData.getDataAsString();
//JSON形式に変換する
const event = JSON.parse(responseLine).events[0];
//イベントへの応答に使用するトークンを取得
const replyToken = event.replyToken;
//寿司か天ぷらでメッセージを分ける
let sendMessage;
if (event.message.text == '天ぷら') {
sendMessage = '天ぷらをタップしました!';
replyLine(sendMessage, replyToken);
}
if (event.message.text == '寿司') {
sendMessage = '寿司をタップしました!';
replyLine(sendMessage, replyToken);
}
}
//LINEに返信する処理
function replyLine(sendMessage, replyToken) {
//LINEのメッセージ形式にする
const LineMessageObject = [{
'type': 'text',
'text': sendMessage
}];
const replyHeaders = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + TOKEN
};
const replyBody = {
'replyToken': replyToken,
'messages': LineMessageObject
};
const replyOptions = {
'method': 'POST',
'headers': replyHeaders,
'payload': JSON.stringify(replyBody)
};
UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', replyOptions);
}
doPost(e)関数がWebhookのトリガーとなり、受け取ったメッセージ(event.message.text)の内容によって返信するメッセージを分岐させています。
デプロイと設定
コードを実装したら、GASプロジェクトをウェブアプリとしてデプロイし、Webhook URLをLINE Developersコンソールに設定する必要があります。
- ウェブアプリとしてデプロイ: 詳しい手順は以下の記事を参照してください。
Google Apps Script(GAS)を使って、特定のキーワードに反応するシンプルなLINE BOTを作成する手順を解説します。Googleアカウントさえあれば無料で開発可能。初心者でもコピペで実装できるよう、コードと設定方法を詳しく紹介します。
- Webhook URLの設定: デプロイ時に発行されたURLをLINE Developersに設定します。
Google Apps Script(GAS)を使って、特定のキーワードに反応するシンプルなLINE BOTを作成する手順を解説します。Googleアカウントさえあれば無料で開発可能。初心者でもコピペで実装できるよう、コードと設定方法を詳しく紹介します。
動作確認
すべての設定が完了したら、動作を確認してみましょう。
GASのスクリプトエディタで
pushmessage_quick_reply関数を実行します。
実行すると、LINEにクイックリプライボタン付きのメッセージが届きます。

「寿司」ボタンをタップすると、「寿司をタップしました!」という返信がBOTから送られてきます。

まとめ
今回は、GASを使ってLINE BOTでクイックリプライメッセージを送受信する方法を解説しました。クイックリプライはユーザーの操作を簡略化し、インタラクティブなBOTを作成する上で非常に便利な機能です。
クイックリプライで利用できるアクションには、今回紹介したメッセージアクション以外にも様々な種類があります。詳しくは以下の記事で解説していますので、ぜひご覧ください。
LINE BOT開発で必須のアクションオブジェクト7種類(ポストバック、メッセージ、URI、日時選択、カメラ、カメラロール、位置情報)の機能と使い方をGoogle Apps Script (GAS) のサンプルを交えて徹底解説。それぞれの違いや最適な使い分けがわかります。

