こんな悩みありませんか?
「LINE Botって難しそう」「サーバー借りないとできないんでしょ?」——そう思って手が出ていない方、多いんじゃないでしょうか。
凛も最初は同じでした。でも、GAS(Google Apps Script)+ LINE Messaging APIの組み合わせなら、サーバー契約なし・お金もかからずに、30行ほどで返信Botが作れてしまいます。
この記事では、最小構成の返信Botを動かすまでの流れを、看護師の言葉でやさしく解説します。の「ごはん何?」にBotが答える構成を例に、読了時間7分でまとめました。
全体像:LINE公式アカウント × GAS × Webhook
仕組みの全体像は次の通りです。
- LINE DevelopersコンソールでMessaging APIチャネルを作る
- GASでWebhook用のエンドポイント(doPost関数)を用意する
- GASをウェブアプリとして公開し、そのURLをLINE側のWebhookに登録
- ユーザーがBotにメッセージ送信 → LINE → GAS doPost → 返信API → ユーザー、という往復
つまりLINEからのメッセージをGASで受けて、返信を送り返す往復処理を作るだけ。専門的に言うとPOSTリクエストを受けて、POSTで返すだけのお仕事です。
ポイント3つ
ポイント1:doPost関数でWebhookを受ける
GASのdoPost(e)関数が、LINEからのイベントを受け取る入口です。ウェブアプリとしてデプロイすると、外部からHTTP POSTで呼び出せるようになります。
const TOKEN = 'あなたのチャネルアクセストークン';
const REPLY_URL = 'https://api.line.me/v2/bot/message/reply';
function doPost(e) {
const data = JSON.parse(e.postData.contents);
const event = data.events[0];
if (!event || event.type !== 'message') return;
const replyToken = event.replyToken;
const userText = event.message.text;
const reply = buildReply(userText);
sendReply(replyToken, reply);
}
replyTokenはLINEが発行する一度きりの鍵で、受け取ってから短時間以内に返信しないと無効になります。レスポンスは早めに返すのがコツ。
ポイント2:返信ロジックを関数で切り出す
メッセージの内容に応じた返答は、別関数に分けておくと後々のメンテが楽です。
function buildReply(text) {
if (text.includes('ごはん')) return '今日は肉じゃがだよ〜';
if (text.includes('天気')) return 'カレンダーで確認してね';
return 'ママはいま仕事中。夜にお返事するね';
}
キーワードを増やしていくだけで、手軽に賢くなります。家族向けBotなら「しりとり」「本日の献立」「ゴミの日」など、生活に直結するテーマが重宝しますよ。
ポイント3:UrlFetchAppで返信を送る
返信はLINEの返信APIにPOSTします。UrlFetchAppを使うのが定番。
function sendReply(replyToken, text) {
UrlFetchApp.fetch(REPLY_URL, {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + TOKEN },
payload: JSON.stringify({
replyToken: replyToken,
messages: [{ type: 'text', text: text }]
})
});
}
TOKENはLINE Developers管理画面の「チャネルアクセストークン(長期)」を発行してコピペします。トークンは他人に見せないのが鉄則。Gitで共有するソースに書くのは避けて、GASの「プロパティサービス」に保存するのが安全です。
const TOKEN = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
デプロイ手順のミニメモ
- GASエディタ右上の「デプロイ」→「新しいデプロイ」→種類「ウェブアプリ」
- アクセス権限は「全員」を選ぶ(匿名ユーザーからのPOSTを受けるため)
- 発行されたURLをLINE DevelopersのWebhook URL欄に貼り付け、Webhook送信を有効化
応用:スプレッドシート連携で「記録するBot」へ
単なる返信Botから一歩進めて、メッセージ内容をスプレッドシートに記録すれば、家族のちょっとしたやり取りや買い物メモを自動ログできます。
function logToSheet(userId, text) {
const sheet = SpreadsheetApp.openById('シートID').getSheetByName('LINE');
sheet.appendRow([new Date(), userId, text]);
}
凛は、家族が「牛乳ない」「おむつ買って」と送ったら自動で買い物リストシートに追記するBotを運用中。会話しているうちに、いつの間にか買い物リストが完成しているのが地味に助かっています。
Botに「献立を返す」「買い物を追加する」など役割を切り替えるだけで、活用範囲がぐっと広がりますよ。
まとめ
GAS×LINE Messaging APIで作る返信Botは、doPostで受けて、ロジックで判断して、UrlFetchAppで返す。この基本フロー30行さえ理解すれば、あとは応用次第で暮らしに直結するツールに化けます。
サーバー契約ゼロ円、GASで完結、しかも30行。副業としてクライアントに提案する最初の一歩にもぴったりです。
まずはLINE Developersの登録から。トークンの管理だけは慎重に、楽しくBot育てていきましょうね。
関連記事
この記事を書いた人:凛
2児のママで現役ナース。夜勤明けの細切れ時間を副業GASに投じ、月5〜8万円の副収入を継続中。「看護師でもコードは書ける」を合言葉に、家事育児とプログラミングを両立する等身大の情報を発信しています。本記事のコードは静的検証済みです(構文・API仕様・ロジックを確認)。