【初心者でもできる】GASでチャットボットを作成する方法を完全解説!

はじめに

「チャットボットを作ってみたい!」
「でもプログラミングはよく分からない…」

そんなあなたにおすすめなのが、
Google Apps Script(GAS)を使ったチャットボット作成です!

この記事では、初心者でもすぐに始められるように、
GASを使った超シンプルなチャットボットの作り方を、わかりやすく解説します。

LINE、Slack、Chatworkなどに応用できる基礎も紹介しますので、
ぜひ最後までチェックしてください!


GASでチャットボットを作るメリット

まず、なぜGASを使ってチャットボットを作るのか?
その理由はシンプルです。

  • 完全無料で使える

  • ブラウザだけで開発できる(インストール不要)

  • Googleサービス(スプレッドシート、Gmail、カレンダーなど)と連携できる

  • トリガー設定で自動応答・定期配信も可能

つまり、
コストゼロ・学習コスト小・機能無限大!
これがGASチャットボット最大の魅力です!


チャットボットの基本構成を理解しよう

まずはチャットボットのざっくりした仕組みを押さえておきましょう。

  1. ユーザーからのメッセージを受け取る

  2. 受け取った内容を解析する

  3. 適切な返事を作る

  4. 返事をユーザーに返す

この流れをGASで再現するだけです。
シンプルですよね!


【実践】GASでチャットボットを作ってみよう!

さっそく手を動かしながら作っていきましょう!


ステップ1:簡単なチャットボットの土台を作る

まずは、チャット形式でメッセージをやり取りする簡単なスクリプトを書いてみます。

function doPost(e) {
  const json = JSON.parse(e.postData.contents);
  const userMessage = json.message.text;

  let replyText = '';

  if (userMessage.includes('こんにちは')) {
    replyText = 'こんにちは!ご用件をどうぞ。';
  } else if (userMessage.includes('ありがとう')) {
    replyText = 'こちらこそありがとうございます!';
  } else {
    replyText = 'すみません、よく分かりませんでした。';
  }

  const reply = {
    replyToken: json.replyToken,
    messages: [
      {
        type: 'text',
        text: replyText
      }
    ]
  };

  return ContentService.createTextOutput(JSON.stringify(reply)).setMimeType(ContentService.MimeType.JSON);
}

このコードは、

  • 受け取ったメッセージを解析して

  • 条件に応じた返事を用意し

  • JSON形式で返す

という超シンプルなチャットボットの基本形です!


ステップ2:実際に動かすにはWebhook設定が必要

LINEやSlackと連携する場合、
GASをWebアプリとして公開し、Webhook URLを発行する必要があります。

やり方は以下!

  1. スクリプトエディタの「デプロイ」→「新しいデプロイ」

  2. 種類を「ウェブアプリ」として公開

  3. 「アクセスできるユーザー」を「全員(匿名ユーザーを含む)」にする

  4. 発行されたURLをチャットサービスのWebhook設定に登録

これでチャットサービスからメッセージが飛んできたら、
GASチャットボットが自動で応答するようになります!


スプレッドシート連携でボットを賢くする

さらに進化させるために、
スプレッドシートを知識データベースとして使ってみましょう。


スプレッドシート例

キーワード 返答メッセージ
こんにちは こんにちは!今日はどんなご用件ですか?
サービスについて 弊社のサービスについてはこちらをご覧ください。
価格 最新の価格表はこのリンクから確認できます。

スクリプト例

function doPost(e) {
  const json = JSON.parse(e.postData.contents);
  const userMessage = json.message.text;
  
  const sheet = SpreadsheetApp.openById('スプレッドシートID').getSheetByName('シート1');
  const data = sheet.getDataRange().getValues();
  
  let replyText = 'すみません、よく分かりませんでした。';
  
  for (let i = 1; i < data.length; i++) {
    if (userMessage.includes(data[i][0])) {
      replyText = data[i][1];
      break;
    }
  }
  
  const reply = {
    replyToken: json.replyToken,
    messages: [
      {
        type: 'text',
        text: replyText
      }
    ]
  };
  
  return ContentService.createTextOutput(JSON.stringify(reply)).setMimeType(ContentService.MimeType.JSON);
}

この方法なら、
スプレッドシートを編集するだけで、ボットの返答内容を簡単にアップデートできます!


トリガー設定で定期メッセージ配信もできる

さらに、GASの「時間トリガー」を使えば、
毎朝定時にお知らせを自動配信みたいなこともできます!

function pushDailyMessage() {
  const url = 'LINE Messaging APIのPush用エンドポイント';
  const userId = '対象ユーザーのID';
  const message = 'おはようございます!今日も元気にがんばりましょう!';

  const payload = {
    to: userId,
    messages: [
      {
        type: 'text',
        text: message
      }
    ]
  };

  const options = {
    method: 'post',
    contentType: 'application/json',
    headers: {
      'Authorization': 'Bearer あなたのアクセストークン'
    },
    payload: JSON.stringify(payload)
  };

  UrlFetchApp.fetch(url, options);
}

この関数にトリガーを設定すれば、
完全自動で毎朝LINEにメッセージが飛ぶようになります!


よくあるエラーと対策

初心者がハマりやすいポイントも整理しておきます。

■ Webアプリ公開設定ミス

  • アクセス権を「全員(匿名含む)」にしていないとWebhookから叩けません!

■ JSON形式ミス

  • JSONのカンマの位置ミスなどでエラーになりやすいので、エディタでチェックしましょう。

■ LINEやSlackの仕様変更

  • 連携先サービスのAPI仕様が変わるとエラーになることがあります。
    定期的にドキュメントを確認しましょう。


まとめ|GASチャットボット作成は思ったより簡単!

この記事では、
GASを使ったチャットボット作成の基本と応用を解説しました。

✅ 受け取って → 分析して → 返事する基本構成
✅ スプレッドシート連携で柔軟性UP
✅ トリガーで定期メッセージ配信

GASを使えば、
コストゼロでオリジナルチャットボットが作れます!

仕事にも趣味にも大活躍間違いなし。
ぜひ今日から、あなただけのチャットボット作成にチャレンジしてみてください!

Shop now