1. ホーム
  2. /
  3. [LINE BOT]
  4. /
  5. 【GAS】LINE Messaging APIでクイックリプライメッセージを送信する方法

【GAS】LINE Messaging APIでクイックリプライメッセージを送信する方法

【GAS】LINE Messaging APIでクイックリプライメッセージを送信する方法

この記事では、Google Apps Script (GAS) を利用して、LINE BOTで「クイックリプライ」メッセージを送信する方法を初心者向けに分かりやすく解説します。

クイックリプライは、ユーザーがメッセージに対して簡単なボタン操作で返信できるようにする機能です。これにより、ユーザー体験を向上させることができます。

公式ドキュメントはこちらです。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
LINE BOT チャットボット 作り方
LINE BOT チャットボット 作り方 を各ショップで検索

事前準備

実装を始める前に、以下の準備が必要です。

  1. チャンネルアクセストークンの取得: LINE Developersコンソールから、利用するBOTのチャンネルアクセストークンを取得してください。詳しい手順は以下の記事で解説しています。
【初心者向け】LINE Messaging APIのアクセストークンを取得する方法を解説
【初心者向け】LINE Messaging APIのアクセストークンを取得する方法を解説

LINE BOT開発に不可欠なMessaging APIのチャンネルアクセストークンを取得する手順を、実際の画面キャリプチャを交えて詳しく解説します。LINE Developersへの登録からプロバイダー、チャンネル作成、トークン発行までを網羅。

  1. ユーザーIDの取得: メッセージの送信先となるご自身のLINEユーザーIDを取得してください。手順はこちらの記事で確認できます。
【GAS】LINE BOTでユーザーIDを取得する方法|Webhookで情報を受け取る
【GAS】LINE BOTでユーザーIDを取得する方法|Webhookで情報を受け取る

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コンソールに設定する必要があります。

  1. ウェブアプリとしてデプロイ: 詳しい手順は以下の記事を参照してください。
【GAS】Google Apps Scriptで簡単なLINE BOTを作る方法(コピペ可)
【GAS】Google Apps Scriptで簡単なLINE BOTを作る方法(コピペ可)

Google Apps Script(GAS)を使って、特定のキーワードに反応するシンプルなLINE BOTを作成する手順を解説します。Googleアカウントさえあれば無料で開発可能。初心者でもコピペで実装できるよう、コードと設定方法を詳しく紹介します。

  1. Webhook URLの設定: デプロイ時に発行されたURLをLINE Developersに設定します。
【GAS】Google Apps Scriptで簡単なLINE BOTを作る方法(コピペ可)
【GAS】Google Apps Scriptで簡単なLINE BOTを作る方法(コピペ可)

Google Apps Script(GAS)を使って、特定のキーワードに反応するシンプルなLINE BOTを作成する手順を解説します。Googleアカウントさえあれば無料で開発可能。初心者でもコピペで実装できるよう、コードと設定方法を詳しく紹介します。

動作確認

すべての設定が完了したら、動作を確認してみましょう。

  1. GASのスクリプトエディタでpushmessage_quick_reply関数を実行します。

  2. 実行すると、LINEにクイックリプライボタン付きのメッセージが届きます。

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

まとめ

今回は、GASを使ってLINE BOTでクイックリプライメッセージを送受信する方法を解説しました。クイックリプライはユーザーの操作を簡略化し、インタラクティブなBOTを作成する上で非常に便利な機能です。

クイックリプライで利用できるアクションには、今回紹介したメッセージアクション以外にも様々な種類があります。詳しくは以下の記事で解説していますので、ぜひご覧ください。

【LINE BOT】GASで使える7種類のアクションオブジェクトまとめと比較
【LINE BOT】GASで使える7種類のアクションオブジェクトまとめと比較

LINE BOT開発で必須のアクションオブジェクト7種類(ポストバック、メッセージ、URI、日時選択、カメラ、カメラロール、位置情報)の機能と使い方をGoogle Apps Script (GAS) のサンプルを交えて徹底解説。それぞれの違いや最適な使い分けがわかります。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
LINE BOT チャットボット 作り方
LINE BOT チャットボット 作り方 を各ショップで検索

関連記事

【GAS】LINE Messaging APIで画像カルーセルメッセージを送信する方法

【GAS】LINE Messaging APIで画像カルーセルメッセージを送信する方法

この記事では、Google Apps Script (GAS) を利用して、LINE BOTで「画像カルーセルテンプレートメッセージ」を送信する方法を解説します。

画像カルーセルは、複数の画像を横にスクロールできる形式で表示し、それぞれにアクションを割り当てることができるメッセージタイプです。商品紹介や選択肢の提示など、視覚的でインタラクティブな表現が可能になります。

公式ドキュメントはこちらを参照してください。

Google Apps Script 始め方 スプレッドシート 活用例
Google Apps Script 始め方 スプレッドシート 活用例 を各ショップで検索
LINE BOT チャットボット 作り方
LINE BOT チャットボット 作り方 を各ショップで検索

【GAS】LINE Messaging APIでカルーセルテンプレートメッセージを送信する方法

【GAS】LINE Messaging APIでカルーセルテンプレートメッセージを送信する方法

この記事では、Google Apps Script (GAS) を利用して、LINE BOTで「カルーセルテンプレートメッセージ」を送信する方法を解説します。

カルーセルテンプレートは、複数のアイテム(カラム)をカードのように横に並べて表示できるメッセージ形式です。各カードには画像、タイトル、説明文、複数のアクションボタンを設定でき、商品リストやレストランのメニュー紹介など、豊富な情報をインタラクティブに見せたい場合に非常に有効です。

公式ドキュメントはこちらを参照してください。