GoogleフォームからLINEに通知を送る方法

ChatGPT様のお陰でスキル習得が捗る昨今。本日はGoogleフォームとLINEを連携させる方法をご紹介します。エンジニアさん向けの記事になります。

※プログラミングの基礎を習得していない方には「かなり難しい」記事になります。

この記事で作成できる仕組みの詳細

次のような仕組みを構築できます。

  1. Googleフォームのアンケートに回答
  2. LINEにLINEボットから「アンケート回答あり!」の返信が届く

LINE Developersに登録しアクセストークンを取得

  1. LINE Developersアカウントの作成:
    • LINE Developersポータルにアクセスし、アカウントを作成します。
    • https://developers.line.biz/ にアクセスしてください。
  2. プロバイダの作成:
    • LINE Developersポータルで新しいプロバイダを作成します。これは、あなたが作成するLINEボットの管理者となります。
  3. LINEボットの作成:
    • 作成したプロバイダ内で新しいLINEボット(Messaging APIチャンネル)を作成します。
    • チャンネルの基本情報を入力し、チャンネルを作成します。
  4. アクセストークンの取得:
    • ボットの設定ページに移動し、「チャンネルアクセストークン」のセクションを見つけます。
    • ここでアクセストークンを発行し、メモしておきます。このトークンはGASからAPIを呼び出す際に必要です。

LINEの通知先ユーザーIDを取得

  1. ボットと友達になる:
    • 作成したボットを自分のLINEアカウントと友達にします。
  2. ボットにメッセージを送る:
    • ボットにメッセージを送ります。これにより、ボットはあなたのユーザーIDを含むイベントを受信します。
  3. Google Apps ScriptでユーザーIDを取得:
    • Google Apps Scriptを使用して、ユーザーからのメッセージを受け取る際にユーザーIDをスプレッドシートに記録するように設定します。スクリプトは下記に記載。
    • デプロイしてGoogle Apps ScriptのURLを取得します。
  4. ボットのWebhook設定:
    • ボットのWebhookを設定し、ユーザーからのメッセージを受け取るためのエンドポイント(通常はGoogle Apps ScriptのURL)を指定します。
  5. ログを確認する:
    • ボットにメッセージを送った後、スプレッドシートのセル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通までに限られているのでご注意ください。有償プランも検討してみてね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です