見出し画像

【完結編】スマホが秘書に。新着口コミをLINEで受け取る「即時通知」の実装

前回の記事で、AIが24時間口コミをパトロールする「エンジン」は完成しました。 しかし、スプレッドシートをいちいち見に行くのは面倒ですよね。

そこで今回は、「新しい口コミが来たら、AIが作った返信案を即座にあなたのLINEへ飛ばす」設定を行います。これぞ、真のオートパイロットです。


ステップ1:LINE Developersで「チャネル」を作成する

  1. LINE Developers にログイン。

  2. 「プロバイダー」を作成し、Messaging API のチャネルを新規作成します。

  3. Messaging API設定 タブから「チャネルアクセストークン(長期)」を発行し、コピーします。

  4. GASの「スクリプトプロパティ」に LINE_ACCESS_TOKEN として保存します。

  5. 自分の ユーザーID(チャネル基本設定タブの下部にあります)も MY_LINE_USER_ID として保存します。※LINEアカウントが未連携だと表示されません、禁じ手で表示させるなら


ステップ2:Messaging API専用の送信関数

LINE Notifyとは送り方が異なります。以下のコードをGASの末尾に貼り付けてください。

JavaScript

/**
 * LINE Messaging APIを使用してプッシュ通知を送る
 */
function sendLineMessage(text) {
  const token = scriptProperties.getProperty('LINE_ACCESS_TOKEN');
  const userId = scriptProperties.getProperty('MY_LINE_USER_ID');
  
  if (!token || !userId) {
    console.error("LINEのトークンまたはユーザーIDが設定されていません。");
    return;
  }

  const url = "https://api.line.me/v2/bot/message/push";
  const payload = {
    "to": userId,
    "messages": [{ "type": "text", "text": text }]
  };
  
  const options = {
    "method": "post",
    "headers": {
      "Content-Type": "application/json",
      "Authorization": "Bearer " + token
    },
    "payload": JSON.stringify(payload),
    "muteHttpExceptions": true
  };
  
  UrlFetchApp.fetch(url, options);
}

ステップ3:自動検知エンジンとの合体

前回の checkNewReviews 関数内の通知部分を、新しい関数に差し替えます。

JavaScript「どこを書き換えるか」が迷いようがない、Messaging API対応版の checkNewReviews 完全書き換え用コードを作成しました。

前回のコードを一度すべて消して、これを貼り付ければ「自動取得」から「LINE Messaging APIでの通知」までが一本に繋がります。


【Messaging API対応】checkNewReviews 完全版コード

JavaScript

/**
 * MEOオートパイロット:新着口コミ自動検知・LINE通知エンジン
 * 製作:あい|現役店舗経営者 × AI・GASエンジニア
 */

function checkNewReviews() {
  const service = getService();
  if (!service.hasAccess()) {
    console.error("認証が必要です。ログのURLから認証を完了してください。");
    console.log(service.getAuthorizationUrl());
    return;
  }

  // 1. GBP APIから最新の口コミを取得
  const ACCOUNT_ID = scriptProperties.getProperty('GBP_ACCOUNT_ID');
  const LOCATION_ID = scriptProperties.getProperty('GBP_LOCATION_ID');
  const url = `https://mybusiness.googleapis.com/v4/accounts/${ACCOUNT_ID}/locations/${LOCATION_ID}/reviews`;
  
  const response = UrlFetchApp.fetch(url, {
    headers: { Authorization: 'Bearer ' + service.getAccessToken() }
  });
  
  const result = JSON.parse(response.getContentText());
  const reviews = result.reviews || [];

  if (reviews.length === 0) return;

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('口コミ管理');
  const lastRow = sheet.getLastRow();
  const existingReviewIds = lastRow > 1 ? sheet.getRange(2, 5, lastRow - 1, 1).getValues().flat() : [];

  // 2. 未登録の口コミをループ処理
  reviews.forEach(review => {
    if (!existingReviewIds.includes(review.reviewId)) {
      const row = [
        new Date(review.createTime), // A: 日付
        review.starRating === "FIVE" ? 5 : (review.starRating === "FOUR" ? 4 : 3), // B: 星
        review.comment || "(コメントなし)", // C: 内容
        "", // D: AI返信案
        review.reviewId // E: 管理用ID
      ];
      sheet.appendRow(row);
      
      const newRow = sheet.getLastRow();
      
      // --- ここからがAI生成とMessaging API通知の連動 ---
      
      // ① AI返信を生成してD列に書き込む
      processRow(sheet, newRow); 
      
      // ② 生成された返信案を取得
      const aiReply = sheet.getRange(newRow, 4).getValue();
      
      // ③ LINE送信用メッセージを組み立て
      const message = `【新着口コミ検知!】\n評価:★${row[1]}\n内容:${row[2]}\n\n🤖AI返信案:\n${aiReply}\n\n※この案で良ければスプレッドシートから投稿してください。`;
      
      // ④ Messaging APIで送信(末尾に定義した関数を呼び出し)
      sendLineMessage(message); 
      
      // ----------------------------------------------
    }
  });
}

ステップ4:なぜMessaging APIなのか?(noteのキラーコンテンツ)

「LINE Notifyが終了し、多くの自動化ツールが動かなくなりました。しかし、これはチャンスです。

Messaging APIを使えば、将来的に『LINEのボタンをポチッと押すだけで、Googleマップに返信が自動投稿される』という、さらに高度な連携も可能になります。時代遅れのツールに固執せず、常に最新のAPIを使いこなす。これこそが、AI時代に取り残されない店舗オーナーの条件です。

🛠 どこが・どう繋がっているのか

どこが・どう繋がっているのか

① Googleマップ ↔ GAS(情報のキャッチ)

  • 繋ぎ役: GBP API と checkNewReviews 関数

  • 仕組み: GASの「トリガー(時計設定)」が1時間に1回、Googleのサーバーに「新しい口コミ、来てない?」と聞きに行きます。これが自動パトロールの正体です。

② GAS ↔ Gemini API(知能の連携)

  • 繋ぎ役: fetchGeminiReply 関数

  • 仕組み: 口コミを見つけると、GASが「この内容に、愛される店主として返信を考えて!」とGeminiに指示を飛ばします。AIが瞬時に「神返信」を生成してGASに返します。

③ GAS ↔ スプレッドシート(記録の自動化)

  • 繋ぎ役: sheet.appendRow

  • 仕組み: AIが考えた返信案と口コミの内容を、スプレッドシートの「口コミ管理」シートに自動で書き込みます。これで台帳が勝手に埋まります。

④ GAS ↔ LINE Messaging API(通知の連携)

  • 繋ぎ役: sendLineMessage 関数

  • 仕組み: シートに書き込んだ瞬間に、GASがLINEのサーバーへ「店主のスマホにこの内容をプッシュ通知して!」とリクエストを送ります。これが「スマホが秘書になる」瞬間です。


💡 「納得ポイント」

「バラバラだったGoogleマップ、AI、LINE。これらをGAS(Google Apps Script)という『接着剤』で一つに繋ぎ合わせる。

あなたが設定するのはその『接着剤』の塗り方だけ。一度繋がってしまえば、あとはそれぞれのサービスが勝手に連携して、あなたの代わりに接客を続けてくれる。これがシステムによるレバレッジです。

💡 手に入る「未来」

「かつて、閉店後に一人でスマホを見つめ、口コミの星の数に一喜一憂していた時間はもうありません。

これからは、LINEの通知をチラッと見て、『お、今日もAIがいい仕事してるな』と微笑む。 そんな、心にゆとりのある店舗経営をスタートさせましょう。


いいなと思ったら応援しよう!

あい|現役店舗経営者 × AI・GASエンジニア もしこの記事が「コーヒー一杯分以上の価値」があると感じていただけたら、活動を応援いただけると大変励みになります。 頂いたサポートは、さらに高度な「店舗×AI」の自動化ツール開発や、海外の有料級情報の仕入れに大切に活用させていただきます。応援、よろしくお願いいたします!