【GAS】【LINE】GASでLINEBOTを作成する。(その1)

GASでLINEBotを作成

LINE DevelopersのMessaging APIを使用してBotを作成します。
LINEBotがスプレッドシートに記載している内容を返信してくれます。
また、メッセージの内容をスプレッドシートに記載してくれたります。
画像も返信してくれるので、非常に便利です。
私は大喜利のお題を出してくれる大喜利君というLINEBotを作成しました。
「お題」とメッセージを投稿すると、スプレッドシートに記載したお題をだしてくれます。さらに私が回答を投稿するとスプレッドシートに記録してくれます。
また、「写真」とメッセージを投稿すると写真でお題を出してくれます。写真で一言みたいな感じですね。 LINEBOTのおかげで、非常に人生が豊かになりました。
あなたも人生のいろどりを豊かにするためにLINEBotを作成しましょう。

LINE Developers の料金に関して

LINEの料金はフリー、ベーシック、プロの3種類があります。
昔はいくつかあったみたいですが、公式アカウントが統合した結果3つになったみたいです。
以下に、料金体系を記載しておきます。今回はフリーで作成するので、無料で実装できます。
基本的に大規模で使用しない限りは無料で十分だと思います。

at.line.me

今回すること

今回は、「いつもよろしく」と言い返してくれるBotを作成します。 コードの中身に関しては次回以降に説明しようと思います。

LINE DevelopersのMessaging APIの登録

以下、公式サイトの手順で、LINE DevelopersのMessaging APIの登録をします。

developers.line.biz

GASのコードの設定

スプレッドシートから、スクリプトエディタを起動して、以下のコードを記載してください。アクセストークンは後で設定します。

// LINE Bot のアクセストークン
var CHANNEL_ACCESS_TOKEN = '<発行したアクセストークン>'

// HTTPリクエスト POST  
var linePost = 'https://api.line.me/v2/bot/message/reply';

function doPost(e) {
  //送信するメッセージを作成
  
  // Jsonにパース
  var json = JSON.parse(e.postData.contents);
  // 返信するためのトークンを取得
  var replyToken = json.events[0].replyToken;

  
  // メッセージをLINEに送信  
  UrlFetchApp.fetch(linePost, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{'type': 'text', 'text': 'いつもよろしく。'}]
    }),
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

Webアプリケーションとして導入

  1. 上段から [公開] -> [Webアプリケーションとして導入] を選択します。
  2. ポップアップから、 [Who has access to the app:] の項目から[anyone, even anonymouse]を選択します。あとはデフォルトでおっけいです
  3. Deployを押下します。
  4. するとまたポップアップがでるので[許可を確認]を押下します。
  5. するとまたポップアップがでるので(しつこいですね)アカウント選択します。
    環境によっては許可されていないサイトなど出てきますが、基本的には全部OKで問題ないです。
  6. 最後に[Current web app URL:]に記載されているURLをメモっておき、OKを押下します。 こちらをLINEのWebhookの宛先に指定します。

Webhookの利用

  1. LINEのDevelopersから先ほど作成したチャネル設定に移動します。
  2. Messaging API設定を押下します。
  3. Webhook URLに先ほど[Current web app URL:]に記載されていたURLを設定します。  
  4. Webhookの利用を有効化します。
  5. チャネルアクセストークンの発行を押下し、トークンを発行します。アクセストークンをメモします。

アクセストークンの設定

  1. 先ほどメモしたアクセストークンをGASの変数CHANNEL_ACCESS_TOKENに設定するため、<発行したアクセストークン>にを書き換えます。
  2. 上段から [公開] -> [Webアプリケーションとして導入] を選択します。
  3. [Project version:]を[New]に変更し、更新を押下します。

Project version更新しないとGASの変更が反映されないので、スクリプトを変更するたびに実施してください。

LINE公式アカウント機能(お好みで)

Messaging API設定から設定します。
LINE公式アカウント機能について説明します。

  • グループ・複数人チャットへの参加を許可する
    有効にするとライングループに参加できます。しないといくら誘ってもグループに参加してくれません。人見知りBOTのままです。 グループラインに参加させるならこの設定は有効化してください。

  • 応答メッセージ
    無効にすると自動的に変身されるメッセージが無効化されます。
    デフォルトでは自動的に謝罪のメッセージをBOT君が送ります。うるさいんで無効化することをお勧めします。

  • あいさつメッセージ
    グループの参加時など始めた会話するときに送られるメッセージを無効にできます。
    用途によって、使い分けてください。

LineBotを友達に登録

  1. LINE DeveloperのMessaging API設定にあるQRコードを読み取り友達に登録します。
  2. Botに直接メッセージまたはグループにメッセージを送信します。

すると、いつもよろしくと返信してくれます。
すごい簡単ですね。
私はBOTをを友達に登録するのに時間がかかってしまいました。
QRコードで友達登録できるなんて初めて知りました。友達が少ないとこういうところで苦労するんですね。

次回以降はスクリプトの中身について解説できたらなと思っています。