GASでLINE Bot開発!Messaging API連携入門
/ 初心者向け
GASでLINE Bot開発!Messaging API連携入門
皆さん、こんにちは!GAS専門ブロガーの〇〇です。
今回は、多くの方が日常的に利用しているコミュニケーションツール、LINEとGoogle Apps Script(GAS)を連携させて、オリジナルのLINE Botを開発する方法について、初心者の方でも分かりやすいように解説していきます。
「LINE Botって難しそう…」「GASで何ができるの?」と思っている方も、この記事を読めばきっと「自分にもできるかも!」と思えるはずです。
なぜGASとLINE Messaging APIなのか?
LINE Botを開発する方法はいくつかありますが、GASとLINE Messaging APIを組み合わせるのがおすすめな理由は、主に以下の点です。
- 手軽さ: GASはGoogleアカウントがあればすぐに始められ、特別な開発環境の構築が不要です。
- 拡張性: GASはGoogle Workspace(Gmail, スプレッドシート, ドキュメントなど)との連携が容易で、LINE Botに様々な機能を追加できます。
- コスト: 基本的には無料(一定の利用量を超えると有料プランもありますが、個人利用の範囲なら無料枠で十分な場合が多いです)。
- 公式ドキュメント: LINE Developersのドキュメントが充実しており、APIの仕様も分かりやすいです。
LINE Messaging APIの基本
LINE Messaging APIは、LINE Botがユーザーからのメッセージを受信したり、ユーザーにメッセージを送信したりするためのAPIです。主に以下の2つの要素で構成されます。
1. Webhook: ユーザーがLINEでBotにメッセージを送ると、LINEサーバーから指定したURL(GASのスクリプトURL)にHTTP POSTリクエストが送信されます。この仕組みをWebhookと呼びます。
2. Push API / Reply API: Botからユーザーへメッセージを送信する際に利用します。Reply APIはユーザーからのメッセージへの返信に、Push APIは任意のタイミングでの送信に利用できます。
GASでLINE Botを実装してみよう!
それでは、実際にGASを使って簡単なLINE Botを作成する手順を見ていきましょう。
1. LINE Developersでの設定
まず、LINE Developersのサイトでプロバイダーとチャネルを作成する必要があります。
- LINE Developers (https://developers.line.biz/)
- 「新規プロバイダー作成」からプロバイダーを作成します。
- 作成したプロバイダーを選択し、「Messaging API」の「新規作成」からMessaging APIチャネルを作成します。
- チャネル作成後、「基本設定」タブにある「Channel secret」と「Channel access token」を控えておきます。これらはGASのスクリプトで必要になります。
2. GASスクリプトの作成
次に、GASでWebhookを受け取るためのスクリプトを作成します。
function doPost(e) {
// LINE Developersで取得したChannel secret
var channelSecret = 'YOUR_CHANNEL_SECRET';
// リクエストヘッダーから署名を取得
var signature = e.headers['X-Line-Signature'];
// リクエストボディを取得
var body = e.postData.contents;
// 署名を検証 (セキュリティのために重要)
if (!validateSignature(body, channelSecret, signature)) {
return ContentService.createTextOutput('Invalid signature').setMimeType(ContentService.MimeType.TEXT);
}
// イベントオブジェクトをパース
var events = JSON.parse(body).events;
// 各イベントを処理
for (var i = 0; i < events.length; i++) {
var event = events[i];
// メッセージイベントの場合
if (event.type === 'message') {
// テキストメッセージの場合
if (event.message.type === 'text') {
var userId = event.source.userId;
var receivedMessage = event.message.text;
// 返信メッセージを作成
var replyMessage = '「' + receivedMessage + '」と受信しました!';
// Reply APIで返信
replyLineMessage(userId, replyMessage, event.replyToken);
}
}
}
return ContentService.createTextOutput('OK').setMimeType(ContentService.MimeType.TEXT);
}
// 署名検証関数 (必要に応じて実装)
function validateSignature(body, channelSecret, signature) {
// ここに署名検証ロジックを実装します。
// Node.jsなどのライブラリを利用して検証するのが一般的ですが、GASでは直接実装が少し複雑です。
// 簡単な例として、ここでは常にtrueを返しますが、実際の運用では必ず実装してください。
// 参考: https://developers.line.biz/ja/docs/messaging-api/develop/gcd/server-validation/
Logger.log('Signature validation skipped for simplicity. Implement actual validation!');
return true;
}
// LINEにメッセージを送信する関数
function replyLineMessage(userId, message, replyToken) {
// LINE Developersで取得したChannel access token
var channelAccessToken = 'YOUR_CHANNEL_ACCESS_TOKEN';
var url = 'https://api.line.me/v2/bot/message/reply';
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + channelAccessToken
};
var payload = {
'replyToken': replyToken,
'messages': [
{
'type': 'text',
'text': message
}
]
};
var options = {
'method': 'post',
'headers': headers,
'payload': JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
※ 上記コードの YOUR_CHANNEL_SECRET と YOUR_CHANNEL_ACCESS_TOKEN は、ご自身のLINE Developersで取得したものに置き換えてください。
3. Webhook URLの設定
GASスクリプトを作成したら、デプロイしてWebhook URLを取得します。
- GASエディタで「デプロイ」→「新しいデプロイ」を選択します。
- 「タイプ」で「ウェブアプリ」を選び、「実行権限」を「自分」などに設定します。
- 「アクセス権」は、最初は「自分」にし、テスト後に必要に応じて変更します。
- デプロイ後、表示される「ウェブアプリのURL」がWebhook URLとなります。
このURLをLINE Developersのチャネル設定画面の「Webhook URL」に設定します。
4. LINE Botとの連携テスト
LINEアプリで、作成したBotを友だち追加し、メッセージを送ってみましょう。GASスクリプトが実行され、返信が返ってくるはずです。
今後のステップ
今回の記事では、最も基本的なテキストメッセージの送受信について解説しました。ここからさらに、以下のような機能を追加していくことができます。
- 画像・スタンプの送信:
type: 'image'やtype: 'sticker'を利用します。 - スプレッドシートとの連携: ユーザーの入力をスプレッドシートに記録したり、スプレッドシートの情報を参照して返信したりできます。
- Googleフォームとの連携: フォームの回答をLINEで通知したり、Botからフォームの入力画面へ誘導したりできます。
- クイズ Bot、天気予報 Botなど: よりインタラクティブなBotを作成できます。
まとめ
Google Apps ScriptとLINE Messaging APIを連携させることで、誰でも手軽にオリジナルのLINE Botを作成できます。今回の入門編を参考に、ぜひ色々な機能を持ったBot開発に挑戦してみてください!
次回は、さらに応用的な機能について掘り下げていきたいと思います。お楽しみに!
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。