LINEボットとGoogle Apps Scriptで実現!クイックリプライの設定方法ガイド

最近LINE Botを作ってみたいと思ってて、クイックリプライを設定したいんですけど、GASでどうやって実現するのかがわからなくて…。
猫男
猫男
catman
catman
よし、catmanがLINEのクイックリプライ*をGoogle Apps Script(GAS)で設定する方法を教えてやろう。簡単に導入できるから、一緒に進めよう。

LINE Botでクイックリプライを設定する準備

LINE Botでクイックリプライを使うには、まず基本的な設定が必要です。LINE Developersでアカウントを作成し、channel secretやchannel access tokenを取得する必要があります。

LINE Developersでのセットアップ

まずはLINE Developersにアクセスし、新しいチャネルを作成します。その後、以下の情報を取得してください。

  • Channel Secret
  • Channel Access Token

これらの情報を使って、GASでLINE APIを使用できるように設定を行います。

 

GASでクイックリプライを実装する基本構造

GASを使ってLINE Botにクイックリプライを設定するための基本構造を見てみましょう。

GASスクリプトの記述

GASでLINE Botを動かすためのスクリプトを書いていきます。まずは、Webhookでメッセージを受け取るためのWebアプリケーションを作成しましょう。


function doPost(e) {
  var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
  var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  
  var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + 'YOUR_CHANNEL_ACCESS_TOKEN'
  };
  
  var postData = {
    'replyToken': replyToken,
    'messages': [
      {
        'type': 'text',
        'text': 'こちらがクイックリプライです',
        'quickReply': {
          'items': [
            {
              'type': 'action',
              'action': {
                'type': 'message',
                'label': '選択肢1',
                'text': '選択肢1'
              }
            },
            {
              'type': 'action',
              'action': {
                'type': 'message',
                'label': '選択肢2',
                'text': '選択肢2'
              }
            }
          ]
        }
      }
    ]
  };
  
  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', {
    'method': 'post',
    'headers': headers,
    'payload': JSON.stringify(postData)
  });
}

このスクリプトでは、まずLINEから受け取ったメッセージを解析し、返信トークン(replyToken)を取得します。

その後、LINEのクイックリプライメッセージを指定し、選択肢を表示する設定を行います。

 

GASデプロイとLINE Bot連携のポイント

GASでスクリプトを書き終わったら、次は実際にデプロイし、LINE Botと連携させる必要があります。

GASでのデプロイ手順

GASのスクリプトを公開するためには、以下の手順を実行します。

  1. GASのメニューから「デプロイ」->「新しいデプロイ」を選択します。
  2. デプロイタイプを「ウェブアプリ」に設定し、アクセスを「全員(匿名)」に設定します。
  3. デプロイするとURLが発行されます。これをLINE DevelopersのWebhook URLに設定します。

 

練習問題

GASでLINE Botにクイックリプライを設定する際に、クイックリプライの選択肢を増やしたい場合、どの部分を変更すれば良いでしょうか?具体的なコード例を示してください。

  

解答・解説


function doPost(e) {
  var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
  var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  
  var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + 'YOUR_CHANNEL_ACCESS_TOKEN'
  };
  
  // クイックリプライの選択肢を追加
  var postData = {
    'replyToken': replyToken,
    'messages': [
      {
        'type': 'text',
        'text': 'こちらがクイックリプライです',
        'quickReply': {
          'items': [
            {
              'type': 'action',
              'action': {
                'type': 'message',
                'label': '選択肢1',
                'text': '選択肢1'
              }
            },
            {
              'type': 'action',
              'action': {
                'type': 'message',
                'label': '選択肢2',
                'text': '選択肢2'
              }
            },
            // 新しい選択肢を追加
            {
              'type': 'action',
              'action': {
                'type': 'message',
                'label': '選択肢3',
                'text': '選択肢3'
              }
            }
          ]
        }
      }
    ]
  };
  
  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', {
    'method': 'post',
    'headers': headers,
    'payload': JSON.stringify(postData)
  });
}

クイックリプライの選択肢を増やしたい場合、quickReply.items配列に新しい選択肢オブジェクトを追加します。それにより、利用者に表示される選択肢が増えます。

なるほど!コードのどこを変更すればいいのか、バッチリ理解できました!
猫男
猫男
catman
catman
その調子だ。この調子でどんどんクイックリプライを活用していこう。

EARTHPG 自動化研究所

「その作業、仕組みにできます。」

Google Apps Script、Python、スプレッドシート自動化、WordPress開発、 API連携、AI活用まで対応。 小さな自動化から業務全体の設計まで、研究所が支援します。