※本記事はアフィリエイト広告を含みます。
顧客サポートや問い合わせ対応のために「LINEチャットボット」の導入を検討したものの、以下の理由で二の足を踏んでいませんか?
- 「開発費用が高そう」
- 「月額利用料がユーザー数に応じて青天井に増えそう」
- 「専用ツールの管理画面を覚えるのが面倒」
もし、これらの悩みをすべて解決し、「月額固定費0円」で、しかも「Googleスプレッドシートだけで管理できる」高機能なBOTが作れるとしたら?
今回は、元・エンジニアの私が実務でも活用している、Google Apps Script (GAS) とスプレッドシートを組み合わせた「LINE BOT構築の裏技」を、コード付きで完全公開します!
▼この記事でわかることは
- LINE公式アカウントとDevelopers設定の全手順
- GAS(Google Apps Script)を使った自動応答プログラムのコピペ実装
- スプレッドシートを「データベース」として使う連携方法
- 【衝撃】AI全盛の今、あえて「スプレッドシート」を選ぶ戦略的理由
プログラミング知識がなくても、コピペで実装可能です。「コストをかけずにDX(自動化)したい」と考えている個人事業主や企業の担当者様、必見です。
なお、ここで紹介する『最強』とは、多機能さではなく『維持費0・誤答0・管理コスト0』という経営効率の極致を指します。AIのようなハルシネーション(もっともらしい嘘)のリスクを排除し、100%制御可能な窓口を数時間で構築することが、本記事のゴールです。
用意するもの
必要なのは以下の2つだけです。
- Googleアカウント(無料のものでOK)
- LINE公式アカウント(未開設の方はこちらから作成)
サーバー代も、専用ツールの契約も不要です。
GoogleとLINEのアカウントさえあれば、今すぐ始められます。
ステップ1:LINE Developersでのチャネル作成
まず、LINEプラットフォーム側でBOT(チャネル)を作成し、外部プログラム(GAS)と通信するための「鍵」を取得します。
1. LINE Developersコンソールにログイン
LINE Developersコンソールにアクセスし、ご自身のLINEアカウントでログインします。
2. プロバイダーとチャネルの作成
初めての場合は「新規プロバイダー作成」をクリックし、適当な名前(例:MyBots)を入力します。
作成したプロバイダーを選択し、「新規チャネル作成」をクリック。
チャネルの種類は「Messaging API」を選択します。
必須項目(チャネル名、説明、業種など)を入力して作成します。
3. 【重要】チャネルアクセストークンの発行
チャネルができたら、「Messaging API設定」タブを開き、一番下までスクロールします。「チャネルアクセストークン(長期)」の「発行」ボタンを押し、表示された長い文字列をコピーしてメモしておきます。 ※これがBOTを動かすための「鍵」になります。他人に教えないでください。
ステップ2:スプレッドシートの準備
GASが読み込むための「台本(データベース)」を作成します。
- 新規スプレッドシートを作成し、シート名を「シート1」にします。
- 以下のようにデータを入力します。
| A列(キーワード) | B列(返信内容) | |
|---|---|---|
| 1行目 | キーワード | 返却 |
| 2行目 | おはよう | おはようございます!今日も頑張りましょう! |
| 3行目 | 料金 | 料金プランはこちらのページをご覧ください。https://… |
| 4行目 | 住所 | 東京都〇〇区… |
- ブラウザのアドレスバーにあるURLから、スプレッドシートIDをコピーします。
https://docs.google.com/spreadsheets/d/[この部分がID]/edit#gid=0
ステップ3:Google Apps Script (GAS) の実装
いよいよプログラム本体です。コピペで動くように作ってあります。
1. プロジェクトの作成
Google Apps Script にアクセスし、「新しいプロジェクト」を作成します。
2. スクリプトプロパティの設定(セキュリティ対策)
コードに直接パスワードを書くのは危険なので、設定画面に保存します。
- 左メニューの「プロジェクトの設定(歯車アイコン)」をクリック。
- 最下部の「スクリプト プロパティ」に以下2つを追加します。
- プロパティ名:
LINE_ACCESS_TOKEN- 値: ステップ1で取得したチャネルアクセストークン
- プロパティ名:
SHEET_ID- 値: ステップ2で取得したスプレッドシートID
3. コードの記述
左メニュー「エディタ(<>アイコン)」に戻り、コード.gsの中身を全て消して、以下のコードを貼り付けます。
/**
* スクリプトプロパティから定数を取得
*/
const ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty('LINE_ACCESS_TOKEN');
const SHEET_ID = PropertiesService.getScriptProperties().getProperty('SHEET_ID');
/**
* LINEからのWebhook(POSTリクエスト)を受け取るメイン関数
*/
function doPost(e) {
// 1. JSONデータをパース
let events;
try {
events = JSON.parse(e.postData.contents).events;
} catch (err) {
return;
}
// 2. イベントチェック
if (!events || events.length === 0) {
return ContentService.createTextOutput(JSON.stringify({'status': 'ok'})).setMimeType(ContentService.MimeType.JSON);
}
// 3. 辞書データの読み込み
const keywordMap = loadKeywordMap();
// 4. イベント処理ループ
events.forEach(event => {
if (event.type === 'message' && event.message.type === 'text') {
const replyToken = event.replyToken;
const userMessage = event.message.text.trim();
let replyText = null;
// キーワード照合(部分一致ロジック)
for (const keyword in keywordMap) {
if (userMessage !== "" && keyword.includes(userMessage)) {
replyText = keywordMap[keyword];
break;
}
}
// 返信実行
if (replyText) {
replyMessage(replyToken, replyText);
} else {
// キーワードが見つからない場合のデフォルト応答(必要なら変更してください)
replyMessage(replyToken, "申し訳ありません。その質問にはお答えできませんが、担当者が確認次第ご連絡します。");
}
}
});
return ContentService.createTextOutput(JSON.stringify({'status': 'ok'})).setMimeType(ContentService.MimeType.JSON);
}
/**
* スプレッドシートから辞書データを取得
*/
function loadKeywordMap() {
try {
const ss = SpreadsheetApp.openById(SHEET_ID);
const sheet = ss.getSheetByName("シート1");
const numRows = sheet.getLastRow() - 1;
if (numRows <= 0) return {};
const data = sheet.getRange(2, 1, numRows, 2).getValues();
const map = {};
for (let i = 0; i < data.length; i++) {
const keyword = data[i][0];
const reply = data[i][1];
if (keyword && String(keyword).trim() !== "") {
map[String(keyword).trim()] = reply;
}
}
return map;
} catch (err) {
return {};
}
}
/**
* LINEへの返信実行
*/
function replyMessage(replyToken, messageText) {
const url = '[https://api.line.me/v2/bot/message/reply](https://api.line.me/v2/bot/message/reply)';
const payload = {
'replyToken': replyToken,
'messages': [{'type': 'text', 'text': messageText}]
};
const options = {
'method': 'post',
'contentType': 'application/json',
'headers': {'Authorization': 'Bearer ' + ACCESS_TOKEN},
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
4. デプロイ(公開)
右上の「デプロイ」→「新しいデプロイ」をクリック。
種類の選択:「Webアプリ」。
アクセスできるユーザー:「全員」(※ここ超重要です!これを忘れると動きません)
「デプロイ」を押し、表示された WebアプリURL をコピーします。
ステップ4:LINEとの紐付けと動作確認
LINE Developersに戻り、「Messaging API設定」タブの「Webhook設定」に、先ほどのURLを貼り付けます。
「Webhookの利用」スイッチをONにします。
LINE公式アカウントの管理画面(LINE Official Account Manager)で、「応答設定」→「詳細設定」の「応答メッセージ」をオフにします。(BOTと標準機能が喧嘩しないようにするため)
これで完成です! QRコードからBOTを友だち追加し、スプレッドシートに登録した言葉(例:「おはよう」)を話しかけてみてください。 自動で返信が返ってくるはずです。感動の瞬間です。
【戦略コラム】なぜ今、AIではなくスプレッドシートなのか?
「今ならChatGPTやGeminiを使えば、もっとすごいBOTができるのでは?」 そう思った方もいるでしょう。確かにその通りです。技術的には可能です。
しかしながら、ビジネス運用、特に企業の公式窓口として考えるなら、「AIが常に正解とは限らない」という事実を知っておく必要があります。
あえて「レガシーな技術」であるスプレッドシート(ルールベース)を選ぶことには、以下の強力なメリットがあります。
「嘘をつかない」という絶対的信頼(ハルシネーションの回避)
AI(LLM)には、もっともらしい嘘をつく「ハルシネーション」というリスクがあります。
企業の公式LINEが、存在しないキャンペーン情報を案内してしまったら? 架空の料金プランを提示してしまったら?……それはもう大炎上です。
スプレッドシート方式なら、「管理者が書いた文言」以外は絶対に発信しません。この100%の制御可能性こそが、ビジネスにおける最大の防御なんです。
「コスト」が完全に予測できる
AIのAPIは従量課金です。もしBOTがバズって大量のアクセスが来たら……?翌月の請求額に青ざめることになるかもしれません。今回の方式なら、1万回会話しようが、10万回会話しようが、GoogleやLINEへの支払いは0円です。予算が決まっているプロジェクトでは、この安心感は絶大ですよね。
「答えが決まっている質問」にはルールベースが最強
「住所は?」「営業時間は?」「振込先は?」
こうした質問に対して、AIに毎回文章を生成させる必要はありません。決まった正解を、0.1秒でズバッと返す。これこそがユーザーが求めている「速さ」と「正確さ」です。
結論:まずは「守り」から入るのが正解
まずはこのスプレッドシート方式で、確実な応答システム(守り)を構築するのが最善策です!
その上で、「もっと雑談に対応したい」「複雑な相談に乗りたい」というニーズが出てきたら、その時初めてAIの導入(攻め)を検討すれば良いと思っています。
いきなりAIで凄いシステムを何日も掛けて作って、結局誰も使用していないとなったなら目も当てられません。今回の方法であれば、結果を素早く求められるビジネスにおいて、わずか数時間でシステムの構築が可能なのは大きなアドバンテージといえます。
まとめ:自動化は、お金をかけずに「知恵」でやる
今回ご紹介したように、Googleスプレッドシートという身近なツールを少し工夫するだけで、驚くほど実用的なソリューションをコスト0で実現できます。
| 比較項目 | スプレッドシート(本方式) | 生成AI(ChatGPT等) |
| 月額コスト | 完全無料 | API利用料(従量課金) |
| 回答の正確性 | 100%(設定通り) | 不確実(嘘をつく可能性あり) |
| 導入難易度 | 低(コピペで完結) | 中〜高(プロンプト調整が必要) |
| 得意なこと | 営業時間、住所、定型質問 | 悩み相談、要約、柔軟な対話 |
まずは社内の問い合わせ対応や、FAQの自動化から始めてみてはいかがでしょうか?
【PR】「実装する時間がない!」という方へ
「記事の内容はわかったけど、自分で設定するのは不安」「エラーが出て進まない」 あるいは、「ChatGPTと連携させて、もっと高度なBOTを作ってほしい!」 という方は、私の「構築代行サービス」をご利用ください。
あなたの業務フローに合わせた最適なBOT(ルールベース)を、スピーディに構築・納品いたします。 まずは「こんなことできる?」という相談からでも大歓迎です。
LINE BOT構築・IT相談はこちら