技術ブログ

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

/ 初心者向け

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

Google Apps Script (GAS) でLINE Bot開発!Messaging API連携入門

皆さんはLINE Botと聞いて、どのようなイメージをお持ちでしょうか?「開発は難しそう」「専門知識が必要そう」と思われがちですが、実はGoogle Apps Script (GAS) を使えば、比較的簡単にオリジナルのLINE Botを作成することができます。

本記事では、GASとLINE Messaging APIを連携させ、簡単なLINE Botを開発する手順を、初心者の方にも分かりやすく解説します。

なぜGASでLINE Bot?

GASは、Google Workspace(Gmail, スプレッドシート, ドキュメントなど)と連携し、様々な自動化を実現できるJavaScriptベースのプラットフォームです。

  • 手軽さ: プログラミング環境の構築が不要で、ブラウザ上で開発できます。
  • 無料: Googleアカウントがあれば誰でも無料で利用できます。
  • Googleサービスとの連携: 普段使っているGoogleサービスと連携させることで、より高度なBotも作成可能です。

これらのメリットから、GASはLINE Bot開発の入門として最適です。

LINE Messaging APIの準備

LINE Botを開発するには、まずLINE Developersで「Messaging API」を利用するための準備が必要です。

1. LINE Developersへの登録: LINEアカウントでログインし、プロバイダーを作成します。

2. Messaging APIチャネルの作成: プロバイダー内に「Messaging API」チャネルを作成します。

3. チャネルシークレットとアクセストークンの取得: 作成したチャネルの詳細画面で、それぞれ「チャネルシークレット」と「アクセストークン」を取得します。これらはGASからLINEにリクエストを送信する際に必要になります。

4. Webhook URLの設定: GASで作成したスクリプトのURLを、Messaging APIチャネルの「Webhook URL」として設定します。これにより、LINEからのメッセージがGASに送信されるようになります。

GASでのLINE Bot実装

それでは、実際にGASでLINE Botを作成してみましょう。

1. GASプロジェクトの作成

Googleドライブを開き、「新規」→「その他」→「Google Apps Script」を選択して、新しいスクリプトプロジェクトを作成します。

2. コードの記述

以下のコードをスクリプトエディタに貼り付けます。YOUR_CHANNEL_SECRETYOUR_ACCESS_TOKENは、先ほど取得した値に置き換えてください。

function doPost(e) {
  const channelSecret = 'YOUR_CHANNEL_SECRET'; // チャネルシークレット
  const accessToken = 'YOUR_ACCESS_TOKEN';     // アクセストークン

  // LINEからのリクエストを検証(セキュリティのため推奨)
  const signature = e.headers['X-Line-Signature'];
  if (!validateSignature(e.postData.contents, channelSecret, signature)) {
    return ContentService.createTextOutput('Invalid signature').setStatusCode(400);
  }

  const events = JSON.parse(e.postData.contents).events;

  for (const event of events) {
    if (event.type === 'message') {
      const replyToken = event.replyToken;
      const messageText = event.message.text;

      let replyMessage = '';
      if (messageText === 'こんにちは') {
        replyMessage = 'こんにちは!何かお手伝いできることはありますか?';
      } else {
        replyMessage = '「こんにちは」と送ってみてください。';
      }

      replyLineMessage(replyToken, replyMessage, accessToken);
    }
  }

  return ContentService.createTextOutput('OK');
}

function replyLineMessage(replyToken, message, accessToken) {
  const url = 'https://api.line.me/v2/bot/message/reply';
  const headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + accessToken
  };

  const payload = JSON.stringify({
    'replyToken': replyToken,
    'messages': [
      {
        'type': 'text',
        'text': message
      }
    ]
  });

  const options = {
    'method': 'post',
    'headers': headers,
    'payload': payload
  };

  UrlFetchApp.fetch(url, options);
}

// リクエストの署名を検証する関数(HMAC-SHA256を使用)
function validateSignature(body, channelSecret, signature) {
  const crypto = Utilities.getScriptCrypto();
  const hash = crypto.hmacSha256(body, channelSecret);
  const encodedHash = Utilities.base64Encode(hash);
  return signature === encodedHash;
}

3. デプロイ

1. スクリプトエディタの「デプロイ」→「新しいデプロイ」を選択します。

2. 「実行するコード」で「関数」を選択し、doPost関数を選びます。

3. 「配置」で「Web アプリ」を選択します。

4. 「実行権限」は、ご自身のGoogleアカウントを選択します。

5. 「アクセス」を「全員」に設定します。

6. 「デプロイ」ボタンをクリックします。

7. デプロイが完了すると、Web アプリの URL が表示されます。この URL を LINE Developers の Messaging API チャネル設定の「Webhook URL」に設定します。

テストしてみよう

LINEアプリで、作成したBotを友達追加し、「こんにちは」とメッセージを送ってみましょう。設定が正しければ、Botから返信が届くはずです。

まとめ

GASとLINE Messaging APIを連携させることで、手軽にオリジナルのLINE Botを作成できることがお分かりいただけたかと思います。今回ご紹介したのは基本的な機能ですが、GASの機能を活用すれば、スプレッドシートから情報を取得して返信したり、Gmailに通知を送ったりと、さらに多彩なBotを開発することができます。ぜひ、あなただけの便利なLINE Botを作成してみてください!

GAS自動化の導入相談

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

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