ChatGPT様のお陰でスキル習得が捗る昨今。本日はGoogleフォームとLINEを連携させる方法をご紹介します。エンジニアさん向けの記事になります。
※プログラミングの基礎を習得していない方には「かなり難しい」記事になります。
この記事で作成できる仕組みの詳細
次のような仕組みを構築できます。
- Googleフォームのアンケートに回答
- LINEにLINEボットから「アンケート回答あり!」の返信が届く
LINE Developersに登録しアクセストークンを取得
- LINE Developersアカウントの作成:
- LINE Developersポータルにアクセスし、アカウントを作成します。
- https://developers.line.biz/ にアクセスしてください。
- プロバイダの作成:
- LINE Developersポータルで新しいプロバイダを作成します。これは、あなたが作成するLINEボットの管理者となります。
- LINEボットの作成:
- 作成したプロバイダ内で新しいLINEボット(Messaging APIチャンネル)を作成します。
- チャンネルの基本情報を入力し、チャンネルを作成します。
- アクセストークンの取得:
- ボットの設定ページに移動し、「チャンネルアクセストークン」のセクションを見つけます。
- ここでアクセストークンを発行し、メモしておきます。このトークンはGASからAPIを呼び出す際に必要です。
LINEの通知先ユーザーIDを取得
- ボットと友達になる:
- 作成したボットを自分のLINEアカウントと友達にします。
- ボットにメッセージを送る:
- ボットにメッセージを送ります。これにより、ボットはあなたのユーザーIDを含むイベントを受信します。
- Google Apps ScriptでユーザーIDを取得:
- Google Apps Scriptを使用して、ユーザーからのメッセージを受け取る際にユーザーIDをスプレッドシートに記録するように設定します。スクリプトは下記に記載。
- デプロイしてGoogle Apps ScriptのURLを取得します。
- ボットのWebhook設定:
- ボットのWebhookを設定し、ユーザーからのメッセージを受け取るためのエンドポイント(通常はGoogle Apps ScriptのURL)を指定します。
- ログを確認する:
- ボットにメッセージを送った後、スプレッドシートのセルA1を確認して、自分のユーザーIDを見つけます。
ユーザーID取得用のスクリプト
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // アクティブシートを取得
var json = JSON.parse(e.postData.contents);
var events = json.events;
events.forEach(function(event) {
if (event.type === 'message' && event.source.type === 'user') {
var userId = event.source.userId;
sheet.getRange('A1').setValue('User ID: ' + userId); // A1セルにユーザーIDを設定
}
});
}
GoogleフォームにGASのプログラムを設置
次のスクリプトをGoogleフォームやスプレッドシートに設置します。
function sendLineMessage(message) {
var accessToken = 'YOUR_ACCESS_TOKEN'; // ここに先ほどのアクセストークンを入力
var url = 'https://api.line.me/v2/bot/message/push';
var headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + accessToken
};
var payload = JSON.stringify({
to: 'USER_OR_GROUP_ID', // ここにメッセージを送りたいユーザーまたはグループのIDを入力
messages: [
{
'type': 'text',
'text': message
}
]
});
var options = {
'method': 'post',
'headers': headers,
'payload': payload
};
UrlFetchApp.fetch(url, options);
}
あとは、メイン関数から呼び出して、好き勝手にメッセージを送信しまくってしまいましょう!
※注意事項※
LINE Developersは無償で使えるメッセージ数が200通までに限られているのでご注意ください。有償プランも検討してみてね。