GASでLINE Botに選択肢を追加する方法と活用法

うーん、LINE Botに選択肢を追加したいんだけど、どうすればいいんだろう?GASを使えばなんとかなる気もするけど…初心者だから不安だなぁ。
猫男
猫男
catman
catman
心配はいらないよ。catmanがGASでLINE Botに選択肢を追加する方法を教えてあげるさ。

 

GASでLINE Botに選択肢を追加する基本

まず、GASを使ってLINE Botに選択肢を追加する際の基本的なステップを解説します。LINE Botに選択肢を追加することで、ユーザーに複数の回答オプションを提示できます。

GASでLINE Messaging APIを設定する

LINE Botに選択肢を実装するには、まずLINE Messaging APIの設定が必要です。以下の工程を順番に進めましょう。

1. LINE DevelopersコンソールでMessaging APIチャンネルを作成します。

2. 作成したチャンネルのチャネルIDとチャネルシークレットを取得します。

3. GASプロジェクトでこれらの情報を使ってLINE Messaging APIを呼び出せるようにします。

GASで選択肢を作成する

次に、GASを使ってLINE Botに選択肢を追加する方法を見ていきましょう。

ユーザーに送信する選択肢は「Template Messages」という形式で作成します。特に「Buttons」タイプを使えば簡単にボタン形式の選択肢を作成できます。

function doPost(e) {
  const replyToken = e.parameter.replyToken;
  const userMessage = e.parameter.userMessage;
  
  if (userMessage === '選択肢') {
    const url = 'https://api.line.me/v2/bot/message/reply';
    const headers = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN
    };
    const options = {
      'headers': headers,
      'method': 'post',
      'payload': JSON.stringify({
        'replyToken': replyToken,
        'messages': [{
          'type': 'template',
          'altText': 'こちらのボタンを選んでください',
          'template': {
            'type': 'buttons',
            'text': 'ボタンから選択をどうぞ',
            'actions': [
              {
                'type': 'message',
                'label': '選択肢1',
                'text': '選択肢1'
              },
              {
                'type': 'message',
                'label': '選択肢2',
                'text': '選択肢2'
              }
            ]
          }
        }]
      })
    };
    UrlFetchApp.fetch(url, options);
  }
}

このスクリプトをGASにセットアップすれば、「選択肢」と入力されたときに選択肢ボタンを表示できます。

doPost(e)関数はLINEプラットフォームからのイベントを受け取って、replyTokenを使ってユーザーにメッセージを返す処理をしています。選択肢は「buttons」タイプのテンプレートメッセージで実装しており、「actions」という配列にはボタンを押したときのアクションを定義します。

 

実践・制御する選択肢のパラメータ

LINE Botの選択肢をさらにカスタマイズすることができるパラメータについて解説します。

ラベルとアクションの設定

選択肢ボタンには「label」と「text」のプロパティがあり、それぞれボタンに表示される文字とボタンが押されたときに送信されるメッセージを設定できます。

プログラムの例にあるように、”label”はボタン上に表示されるテキスト、”text”はボタンを押した際にLINE Botに送信されるメッセージとして使います。

 

練習問題

今回は、同様のスクリプトを使って、”選択肢3″と”選択肢4″を追加する方法を考えてみましょう。

  

解答・解説

function doPost(e) {
  const replyToken = e.parameter.replyToken;
  const userMessage = e.parameter.userMessage;
  
  if (userMessage === '選択肢') {
    const url = 'https://api.line.me/v2/bot/message/reply';
    const headers = {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN
    };
    const options = {
      'headers': headers,
      'method': 'post',
      'payload': JSON.stringify({
        'replyToken': replyToken,
        'messages': [{
          'type': 'template',
          'altText': 'こちらのボタンを選んでください',
          'template': {
            'type': 'buttons',
            'text': 'ボタンから選択をどうぞ',
            'actions': [
              {
                'type': 'message',
                'label': '選択肢1',
                'text': '選択肢1'
              },
              {
                'type': 'message',
                'label': '選択肢2',
                'text': '選択肢2'
              },
              {
                'type': 'message',
                'label': '選択肢3',
                'text': '選択肢3'
              },
              {
                'type': 'message',
                'label': '選択肢4',
                'text': '選択肢4'
              }
            ]
          }
        }]
      })
    };
    UrlFetchApp.fetch(url, options);
  }
}

スクリプトにさらに行を追加し、新しい選択肢を設定しました。”actions”配列の中に新しいオブジェクトを追加することで対応しています。”label”と”text”をそれぞれ異なる内容にすることで、新規の選択肢を実現しました。

EARTHPG 自動化研究所

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

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