Help us understand the problem. What is going on with this article?

Google Apps ScriptでLINE BOTつくったら30分で動かせた件

More than 1 year has passed since last update.

GWだし前々から作ろうと思ってたLINE botをつくってみた。

サーバーどうしよ

ちょっと前まではherokuが定番だったが、無料枠のできることが変わって、常時稼働ができないみたい。
AWSのlambdaとかもありだけど、確実に無料なやつないかな、ないよな…

あんじゃん

先人の知恵を漁っていたらGoogle Apps Script(以下GAS)なら無料でサーバーレスできるだとっ!
GASも前々から気になっていたので、使ってみよう。

Line BotをGoogle App Scriptで無料で手軽に試してみる。

必要なもの

  • Googleアカウント
  • LINE developersアカウント
  • JavaScriptへの愛

LINE developers設定

LINEのbotなので、LINE developersで必要な登録と設定を済ませましょう。
この辺りはだいぶ前に登録だけしていたので割愛します。
こちらのリンクが参考になります。
LINEのBot開発 超入門(前編) ゼロから応答ができるまで

GASでコーディング

LINEの設定が終わったら、GASでコーディングしていきましょう。
Google Driveにログイン後、Googleスプレッドシートを選択。
スクリーンショット 2018-04-28 16.16.51.png

スプレッドシートを開いたらスクリプトエディタを選択。
(直接開く方法もありますが、今回はこっちでつくりました。)
スクリーンショット 2018-04-28 16.19.10.png

そしたらエディタが開くのでここにbotの中身をガリガリ書いていきましょう。
スクリーンショット 2018-04-28 16.23.27.png

ES6は対応していないようなので、constやらアロー関数やらは使わずに

bot.js
// LINE developersのメッセージ送受信設定に記載のアクセストークン
var ACCESS_TOKEN = '<Your Access Token>';

function doPost(e) {
  // WebHookで受信した応答用Token
  var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
  // ユーザーのメッセージを取得
  var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  // 応答メッセージ用のAPI URL
  var url = 'https://api.line.me/v2/bot/message/reply';

  UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{
        'type': 'text',
        'text': userMessage + 'ンゴ',
      }],
    }),
    });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

コーディング参考リンク
LINE公式 APIリファレンス

Webサービスとして公開

コーディングも終わったらこのスクリプトをウェブアプリケーションとして公開しましょう。
Webアプリ化する作業も簡単なのがいいですね。

スクリーンショット 2018-04-28 16.38.31.png

スクリーンショット_2018-04-28_16_40_09.png

こちらで発行されたURLをLINE DevelopersでWebhook URLに登録して完成です!
スクリーンショット_2018-04-28_16_43_47.png

動作確認

さっそくbotを友達登録して、LINEで話しかけてみましょう。

今回はユーザーが話しかけた言葉の語尾に「ンゴ」をつけるように設定しています。
スクリーンショット 2018-04-28 16.54.36.png

無事動作していますね!

簡単なLINE botはGASで

30分程度で実装できたので正直感動しました。
今回のbotのつくりだと実はメッセージにしか反応できないので、スタンプに対してはうまく返せないなどコードの改良点はまだまだありますが、遊ぶには十分かと。

いいね。GAS。

hakshu
ソフトウェアエンジニア。Web系 メイン言語はJavaScript 最近はAngularとRailsで開発しています。
classi
学校の先生・生徒・保護者向けのB2B2Cの学習支援Webサービス「Classi(クラッシー)」 を開発・運営している会社です。
https://classi.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした