技術ブログ

GASでLINE Bot作成!Messaging API連携入門

/ 初心者向け

GASでLINE Bot作成!Messaging API連携入門

Google Apps Script (GAS) とLINE Messaging APIでLINE Botを開発しよう!

近年、ビジネスコミュニケーションや情報発信の手段としてLINEの重要性が増しています。そんなLINEで、Google Apps Script (GAS) を使ってオリジナルのLINE Botを開発できることをご存知でしょうか?

GASは、Google Workspaceの各サービス(Gmail、スプレッドシート、カレンダーなど)を自動化できる強力なスクリプト言語です。これとLINE Messaging APIを連携させることで、Webサーバーを立てることなく、手軽にLINE Botを構築できます。本記事では、GASでLINE Botを開発するための第一歩を、初心者の方にも分かりやすく解説します。

なぜGASでLINE Botなのか?

GASでLINE Botを開発するメリットはいくつかあります。

  • サーバー不要: 通常、LINE Botを開発するにはWebサーバーの構築や運用が必要ですが、GASならGoogleのサーバー上で動作するため、その手間が省けます。
  • Google Workspaceとの連携: GASならではの強みとして、Gmailへのメール送信、スプレッドシートへのデータ記録、カレンダーへの予定追加など、Google Workspaceのサービスと簡単に連携できます。
  • JavaScriptベース: 多くの開発者にとって馴染みのあるJavaScriptで記述できるため、学習コストが比較的低いです。
  • 無料利用枠: GASは無料利用枠が提供されており、小規模なBotであればコストをかけずに運用できます。

準備するもの

  • Googleアカウント: GASを利用するために必要です。
  • LINEアカウント: Botをテストするために必要です。
  • LINE Developersアカウント: LINE Messaging APIを利用するために必要です。

LINE Developersでの設定

まず、LINE Messaging APIを利用するための設定を行います。

1. LINE Developersコンソールにアクセス: https://developers.line.biz/console/ にアクセスし、LINEアカウントでログインします。

2. プロバイダーの作成: 「新しいプロバイダーを作成」ボタンをクリックし、プロバイダー名を入力して作成します。

3. チャネルの作成: 作成したプロバイダーを選択し、「Messaging API」の「作成」ボタンをクリックします。必要な情報を入力してチャネルを作成します。

4. チャネルシークレットとアクセストークンの取得: チャネル作成後、「チャネル基本設定」タブで「チャネルシークレット」を確認します。また、「Messaging API」タブの「アクセストークン(長期)」の「発行」ボタンをクリックして、「アクセストークン」を取得します。これらはGASからLINE APIを呼び出す際に必要になりますので、必ず控えておいてください。

GASでのスクリプト作成

次に、GASでLINE Messaging APIからのWebhookを受け取り、応答を返すスクリプトを作成します。

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

2. スクリプトエディタの起動: プロジェクト名(例: LineBotGAS)を設定し、スクリプトエディタを開きます。

3. doPost関数の記述: LINE Messaging APIからのWebhookはHTTP POSTリクエストとして送信されるため、GASではdoPost関数でこれを受け取ります。

function doPost(e) {
  var channelSecret = 'YOUR_CHANNEL_SECRET'; // LINE Developersで取得したチャネルシークレット
  var channelAccessToken = 'YOUR_CHANNEL_ACCESS_TOKEN'; // LINE Developersで取得したアクセストークン

  var body = e.postData.contents;
  var signature = e.headers['X-Line-Signature'];

  // シグネチャ検証(セキュリティのため重要)
  if (!validateSignature(body, channelSecret, signature)) {
    return ContentService.createTextOutput(JSON.stringify({}));
  }

  var events = JSON.parse(body).events;

  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    var userId = event.source.userId;
    var messageType = event.message.type;

    if (messageType === 'text') {
      var receivedText = event.message.text;

      // 返信メッセージの作成(例: 受け取ったテキストをそのまま返す)
      var replyToken = event.replyToken;
      var replyMessage = {
        "type": "text",
        "text": "あなたは「" + receivedText + "」と入力しましたね!"
      };

      replyMessageToLine(channelAccessToken, replyToken, replyMessage);
    }
  }

  return ContentService.createTextOutput(JSON.stringify({}));
}

// シグネチャ検証関数(別途実装が必要です)
function validateSignature(body, channelSecret, signature) {
  // TODO: ここにHMAC-SHA256によるシグネチャ検証ロジックを実装します。
  // LINE Developersのドキュメントを参照してください。
  Logger.log('シグネチャ検証を実装してください。');
  return true; // 仮実装
}

// LINE APIへメッセージを返信する関数
function replyMessageToLine(accessToken, replyToken, message) {
  var url = 'https://api.line.me/v2/bot/message/reply';
  var headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + accessToken
  };
  var payload = {
    'replyToken': replyToken,
    'messages': [message]
  };

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

  try {
    UrlFetchApp.fetch(url, options);
  } catch (e) {
    Logger.log('Error sending reply: ' + e);
  }
}

注意: 上記コードのYOUR_CHANNEL_SECRETYOUR_CHANNEL_ACCESS_TOKENは、ご自身のLINE Developersで取得したものに置き換えてください。また、validateSignature関数は、LINE Messaging APIのドキュメントを参考に、HMAC-SHA256によるシグネチャ検証を実装する必要があります。これはセキュリティ上非常に重要です。

Webhook URLの設定

GASスクリプトをデプロイし、LINE BotにWebhook URLを設定します。

1. スクリプトのデプロイ: スクリプトエディタの「デプロイ」→「新しいデプロイ」を選択します。実行タイプを「ウェブアプリケーション」にし、アクセス権限は「自分のみ」または必要に応じて設定し、「デプロイ」ボタンをクリックします。デプロイ後、「ウェブ アプリケーションの URL」が表示されるので、これをコピーしておきます。

2. LINE DevelopersでのWebhook設定: LINE Developersコンソールで、作成したチャネルの「Messaging API」設定画面に戻ります。「Webhook設定」の「編集」ボタンをクリックし、先ほどコピーしたGASのウェブアプリケーションURLを「Webhook URL」として入力し、保存します。

これで、LINEでBotを友達追加し、メッセージを送信すると、GASスクリプトが実行され、応答が返ってくるはずです。

まとめ

GASとLINE Messaging APIを連携させることで、Webサーバー不要で手軽にLINE Botを開発できることをご紹介しました。今回作成したのは非常にシンプルな応答ボットですが、GASの強力な機能を使えば、さらに高度なBotを開発することも可能です。

例えば、

  • スプレッドシートから情報を取得して返信する
  • Gmailにメールを送信する
  • カレンダーに予定を追加する

など、あなたのアイデア次第で様々な機能を持つBotを作成できます。ぜひ、GASを使ったLINE Bot開発に挑戦してみてください!

GAS自動化の導入相談

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

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