技術ブログ

GASでLINE Bot開発!Messaging API連携入門

/ 初心者向け

GASでLINE Bot開発!Messaging API連携入門

GASでLINE Bot開発!Messaging API連携入門

皆さん、こんにちは!GAS専門ブロガーの〇〇です。

今回は、多くの方が日常的に利用しているコミュニケーションツール、LINEとGoogle Apps Script(GAS)を連携させて、オリジナルのLINE Botを開発する方法について、初心者の方でも分かりやすいように解説していきます。

「LINE Botって難しそう…」「GASで何ができるの?」と思っている方も、この記事を読めばきっと「自分にもできるかも!」と思えるはずです。

なぜGASとLINE Messaging APIなのか?

LINE Botを開発する方法はいくつかありますが、GASとLINE Messaging APIを組み合わせるのがおすすめな理由は、主に以下の点です。

  • 手軽さ: GASはGoogleアカウントがあればすぐに始められ、特別な開発環境の構築が不要です。
  • 拡張性: GASはGoogle Workspace(Gmail, スプレッドシート, ドキュメントなど)との連携が容易で、LINE Botに様々な機能を追加できます。
  • コスト: 基本的には無料(一定の利用量を超えると有料プランもありますが、個人利用の範囲なら無料枠で十分な場合が多いです)。
  • 公式ドキュメント: LINE Developersのドキュメントが充実しており、APIの仕様も分かりやすいです。

LINE Messaging APIの基本

LINE Messaging APIは、LINE Botがユーザーからのメッセージを受信したり、ユーザーにメッセージを送信したりするためのAPIです。主に以下の2つの要素で構成されます。

1. Webhook: ユーザーがLINEでBotにメッセージを送ると、LINEサーバーから指定したURL(GASのスクリプトURL)にHTTP POSTリクエストが送信されます。この仕組みをWebhookと呼びます。

2. Push API / Reply API: Botからユーザーへメッセージを送信する際に利用します。Reply APIはユーザーからのメッセージへの返信に、Push APIは任意のタイミングでの送信に利用できます。

GASでLINE Botを実装してみよう!

それでは、実際にGASを使って簡単なLINE Botを作成する手順を見ていきましょう。

1. LINE Developersでの設定

まず、LINE Developersのサイトでプロバイダーとチャネルを作成する必要があります。

  • LINE Developers (https://developers.line.biz/)
  • 「新規プロバイダー作成」からプロバイダーを作成します。
  • 作成したプロバイダーを選択し、「Messaging API」の「新規作成」からMessaging APIチャネルを作成します。
  • チャネル作成後、「基本設定」タブにある「Channel secret」と「Channel access token」を控えておきます。これらはGASのスクリプトで必要になります。

2. GASスクリプトの作成

次に、GASでWebhookを受け取るためのスクリプトを作成します。

function doPost(e) {
  // LINE Developersで取得したChannel secret
  var channelSecret = 'YOUR_CHANNEL_SECRET';

  // リクエストヘッダーから署名を取得
  var signature = e.headers['X-Line-Signature'];

  // リクエストボディを取得
  var body = e.postData.contents;

  // 署名を検証 (セキュリティのために重要)
  if (!validateSignature(body, channelSecret, signature)) {
    return ContentService.createTextOutput('Invalid signature').setMimeType(ContentService.MimeType.TEXT);
  }

  // イベントオブジェクトをパース
  var events = JSON.parse(body).events;

  // 各イベントを処理
  for (var i = 0; i < events.length; i++) {
    var event = events[i];

    // メッセージイベントの場合
    if (event.type === 'message') {
      // テキストメッセージの場合
      if (event.message.type === 'text') {
        var userId = event.source.userId;
        var receivedMessage = event.message.text;

        // 返信メッセージを作成
        var replyMessage = '「' + receivedMessage + '」と受信しました!';

        // Reply APIで返信
        replyLineMessage(userId, replyMessage, event.replyToken);
      }
    }
  }

  return ContentService.createTextOutput('OK').setMimeType(ContentService.MimeType.TEXT);
}

// 署名検証関数 (必要に応じて実装)
function validateSignature(body, channelSecret, signature) {
  // ここに署名検証ロジックを実装します。
  // Node.jsなどのライブラリを利用して検証するのが一般的ですが、GASでは直接実装が少し複雑です。
  // 簡単な例として、ここでは常にtrueを返しますが、実際の運用では必ず実装してください。
  // 参考: https://developers.line.biz/ja/docs/messaging-api/develop/gcd/server-validation/
  Logger.log('Signature validation skipped for simplicity. Implement actual validation!');
  return true;
}

// LINEにメッセージを送信する関数
function replyLineMessage(userId, message, replyToken) {
  // LINE Developersで取得したChannel access token
  var channelAccessToken = 'YOUR_CHANNEL_ACCESS_TOKEN';

  var url = 'https://api.line.me/v2/bot/message/reply';
  var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + channelAccessToken
  };

  var payload = {
    'replyToken': replyToken,
    'messages': [
      {
        'type': 'text',
        'text': message
      }
    ]
  };

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

  UrlFetchApp.fetch(url, options);
}

※ 上記コードの YOUR_CHANNEL_SECRETYOUR_CHANNEL_ACCESS_TOKEN は、ご自身のLINE Developersで取得したものに置き換えてください。

3. Webhook URLの設定

GASスクリプトを作成したら、デプロイしてWebhook URLを取得します。

  • GASエディタで「デプロイ」→「新しいデプロイ」を選択します。
  • 「タイプ」で「ウェブアプリ」を選び、「実行権限」を「自分」などに設定します。
  • 「アクセス権」は、最初は「自分」にし、テスト後に必要に応じて変更します。
  • デプロイ後、表示される「ウェブアプリのURL」がWebhook URLとなります。

このURLをLINE Developersのチャネル設定画面の「Webhook URL」に設定します。

4. LINE Botとの連携テスト

LINEアプリで、作成したBotを友だち追加し、メッセージを送ってみましょう。GASスクリプトが実行され、返信が返ってくるはずです。

今後のステップ

今回の記事では、最も基本的なテキストメッセージの送受信について解説しました。ここからさらに、以下のような機能を追加していくことができます。

  • 画像・スタンプの送信: type: 'image'type: 'sticker' を利用します。
  • スプレッドシートとの連携: ユーザーの入力をスプレッドシートに記録したり、スプレッドシートの情報を参照して返信したりできます。
  • Googleフォームとの連携: フォームの回答をLINEで通知したり、Botからフォームの入力画面へ誘導したりできます。
  • クイズ Bot、天気予報 Botなど: よりインタラクティブなBotを作成できます。

まとめ

Google Apps ScriptとLINE Messaging APIを連携させることで、誰でも手軽にオリジナルのLINE Botを作成できます。今回の入門編を参考に、ぜひ色々な機能を持ったBot開発に挑戦してみてください!

次回は、さらに応用的な機能について掘り下げていきたいと思います。お楽しみに!

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る