Google Apps Scriptで簡単!LINE Botでオウム返しを実現する方法

LINE Botで何か面白いことをしたいんだけど、何かいいアイデアはないかな?オウム返しって簡単そうだけど、どうやって作るんだろ…?
猫男
猫男
catman
catman
それなら、GASを使ってLINE Botでオウム返しを実現する方法を教えよう。経験がなくても問題ないさ。

GASを利用してLINE Botを作成する手順

LINE Botでのオウム返しの設定は、比較的簡単です。以下の手順に従えば、誰でも自分のLINE Botを使ってオウム返しを行うことができます。

LINE Developersに登録してBotを作成

まずはLINE Developersにアクセスし、Developer登録を行います。その後、新しいプロバイダを作成し、LINE Messaging API用のチャネルを設定します。

これでBotの基本設定が完了します。次にGASでスクリプトを作成します。

Google Apps Scriptでスクリプトを記述

次に、GASのプロジェクトを新規作成し、以下のようにスクリプトを書いていきます。

 function doPost(e) {
  // リクエストのペイロードを取得
  const json = JSON.parse(e.postData.contents);
  const userMsg = json.events[0].message.text;

  // オウム返しの処理
  replyToLine(userMsg);

  return ContentService.createTextOutput(JSON.stringify({ "status": "success" })).setMimeType(ContentService.MimeType.JSON);
}
 
function replyToLine(replyMessage) {
  const LINE_CHANNEL_ACCESS_TOKEN = 'YOUR_ACCESS_TOKEN';
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + LINE_CHANNEL_ACCESS_TOKEN,
  };

  const postData = {
    'replyToken': replyToken,
    'messages': [{
      'type': 'text',
      'text': replyMessage,
    }]
  };

  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', {
    'headers': headers,
    'method': 'post',
    'payload': JSON.stringify(postData),
  });
}

このスクリプトは、ユーザーからのメッセージを取得し、同じ内容をそのままユーザーに返信するオウム返し処理を実現します。

スクリプトの設定を行う

次に、GASプロジェクトのエディタ上で「プロジェクトのプロパティ」を利用して、LINE Botのチャネルアクセス・トークン(YOUR_ACCESS_TOKEN)を設定します。

さらにスクリプトをウェブアプリケーションとしてデプロイし、エンドポイントをLINE DevelopersのBot設定に登録します。

わあ、本当に簡単そうだ!これで僕のLINE Botもオウム返しをすることができるんだね。
猫男
猫男

GASでオウム返しBotを動かす

ここまでの設定が完了したら、Botはメッセージに対してオウム返しを行うようになります。試しにLINEでBotに話しかけてみましょう。

GASのスクリプトとLINEの設定を丁寧に行えば、誰でもオウム返しのLINE Botを作成できます。

実際にオウム返しを試す

Botにメッセージを送信し、Botが同じメッセージを返信するか確認します。正常に動作すれば成功です。

これでオウム返しBotが完成しました!

これが動いたら、とってもワクワクするね!GASとLINE Botの組み合わせで他にもいろいろなことができそう!
猫男
猫男
catman
catman
その通りさ。次のステップを見つけることだ。創造は無限に広がる。

練習問題:GASを使ったLINE Botでオウム返し

ビギナーのためのスクリプト問題です。以下のコードを読んで、次の問いに答えてください。

 function doPost(e) {
  const userMsg = JSON.parse(e.postData.contents).events[0].message.text;
  replyToLine(userMsg);
}

function replyToLine(replyMessage) {
  // Your existing code here
}

このスクリプトのuserMsg変数には何が格納されていますか?

  

解答と解説

 function doPost(e) {
  const userMsg = JSON.parse(e.postData.contents).events[0].message.text;
  replyToLine(userMsg);
}

解答:userMsgには、LINE Botに送信されたメッセージのテキストが格納されています。

解説:doPost関数は、LINE PlatformからPOSTされたデータを処理し、JSON形式に変換した後、ユーザーから送信されたメッセージのテキスト情報をuserMsg変数に格納します。この変数を使用して、後続の処理を行います。

このメッセージを取得することで、オウム返しをするためのメッセージデータを得ることができます。

EARTHPG 自動化研究所

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

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