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_SECRETとYOUR_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通知、スプレッドシート連携などを業務に合わせて実装できます。