LINEチャットボット(スプレッドシートで定型文)

LINEBOT

以下の点に注意してから作業を始めてください!

  • パソコンで作業をする
  • ブラウザの自動翻訳機能をオフにする

スプレッドシートの準備

1.ページ右上のをクリックし、メニューに表示されるスプレッドシートをクリックします。

2.新しいスプレッシートを作成の下にある、空白をクリックします。

3.スプレッドシート名シート名を変更します。

変更するには上側にある無題のスプレッドシートをクリックし、自分の好きな名前に書き換えます。下側にあるシート名はダブルクリックをして自分の好きな名前に書き換えます。

4.受信用と返信用の語句を入力します。

A列には自分が送信する語句を書き、B列にはBOTが返信する語句を書きます。

5.スプレッシートIDの確認をします。

スプレッドシーIDURLの一部です、スプレッドシートを開いているブラウザのアドレスバーを見ることでスプレッドシートIDを確認できます。

https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=0

Apps Scriptにプログラミング+公開設定

1.Apps Scriptを開きます。

ページ内の上側にある拡張機能をクリックし、下に表示されたApps Scriptをクリックします。

2.Apps Scriptの画面が表示されます。

元々書いてあるコードはすべて消し、画像下にあるコードを貼り付けます。

var LINE_ACCESS_TOKEN = "チャネルアクセストークンをここに入力";
var ss = SpreadsheetApp.openById("スプレッドシートIDをここに入力");
var sh = ss.getSheetByName("シート名をここに入力");

function doPost(e) {
    if (typeof e === "undefined") {
        return;
    } else {
        var json = JSON.parse(e.postData.contents);
        replyFromSheet(json)
    }
}

function replyFromSheet(data) {
    var replyUrl = "https://api.line.me/v2/bot/message/reply";
    var lastRow = sh.getLastRow();
    var wordList = sh.getRange(1, 1, lastRow, 2).getValues();
    var reply_token = data.events[0].replyToken; //reply token
    var text = data.events[0].message.text;
    var replyTextList = [];

    for (var i = 1; i < wordList.length; i++) {
        if (wordList[i][0] == text) {
            replyTextList.push(wordList[i][1]);
        }
    }

    if (replyTextList.length < 1) {
        return;

    } else if (replyTextList.length > 5) {
        var messageLength = 5;
    } else {
        var messageLength = replyTextList.length;
    }

    var messageArray = [];

    for (var j = 0; j < messageLength; j++) {
        messageArray.push({ "type": "text", "text": replyTextList[j] });
    }

    var headers = {
        "Content-Type": "application/json; charset=UTF-8",
        "Authorization": "Bearer " + LINE_ACCESS_TOKEN,
    };

    var postData = {
        "replyToken": reply_token,
        "messages": messageArray
    };

    var options = {
        "method": "post",
        "headers": headers,
        "payload": JSON.stringify(postData)
    };

    UrlFetchApp.fetch(replyUrl, options);
}

3.Apps Scriptに必要な情報を入力します。

  • var LINE_ACCESS_TOKEN = “チャネルアクセストークン”;
  • var ss = SpreadsheetApp.openById(“スプレッシートID”);
  • var sh = ss.getSheetByName(“シート名”);

上記3点を自分の物に書き換えればプログラミングは完了です。

4.GASとMessaging APIの接続をしていきます。

ページ右上のデプロイをクリックし、下に表示される新しいデプロイをクリックします。

新しいデプロイの右下にある歯車のアイコンをクリックし、表示されるウェブアプリをクリックします。

アクセスできるユーザーを全員に変え、右下のデプロイをクリックします。

5.デプロイをクリックすると、アクセスの許可が求められます。

アクセスの承認をクリックします。

オレンジの枠で囲われた自分のアカウント上をクリックします。

下にある許可をクリックします。

デプロイを更新しました。と表示されるので、この後使うウェブアプリのURLコピーしてから完了をクリックします。

6.LINE DevelopersコンソールにWebhook URLを入れます。

https://developers.line.biz/ja/にアクセスし、右上のログインをクリックします。

最近閲覧したチャネルの下にある、自分が作ったチャネルをクリックします。

画面中央付近にあるMessaging API設定をクリックします。

画面を下にスクロールしていき、Webhook URLの横にある編集をクリックします。

Webhook URL横の空欄に、先ほどコピーしておいたウェブアプリのURLを貼り付けてから更新をクリックします。

Webhookの利用 横にあるボタンをクリックしてオンにします。

Webhook URLの右下にある検証クリックし、成功と表示されれば完了です。

検証ボタンを押すとエラーが出る場合

LINE Developpersが英語版になっていませんか?ブラウザの翻訳機能で無理やり日本語にしてしまうとエラーが出てしまいます。

日本語にする場合は一度ページを更新(F5キー等)して英語表示に戻してからページ右下のEnglish 横にある▼をクリックして日本語にしてください。

7.実際にLINEで会話してみましょう。