2025年4月8日 星期二

【Google教學】使用Google Apps Script申請LineBot、查詢群組ID並傳送訊息

今天的Google教學主題是如何透過Google Apps Script來申請LineBot、查詢其所在的群組ID,並且最終能將訊息傳送到指定的Line群組。這對於需要自動化發送通知到特定群組的使用者來說非常實用。

背景:為何需要查詢群組ID?

先前我曾分享過一個查詢LineBot群組ID的方法,但有網友回饋說他自行操作後產生的ID與我範例中的不同,導致無法成功使用。

經過研究發現,主要原因在於:

  1. 個人Line ID 的變動性: 同一個使用者在不同的Line群組中,他的 User ID 是不一樣的。

  2. 群組ID 的唯一性: 每個Line群組都有一個獨一無二的 Group ID

  3. 機器人與群組的對應: 必須使用加入該群組的特定Line機器人,才能查詢到該機器人對於該群組的專屬 Group ID

簡單來說,要透過機器人發送訊息到某個群組,你需要:

  • 該機器人的 Channel Access Token

  • 該機器人在目標群組中所對應的 群組 ID (Group ID)

注意:

  • 如果是要傳送訊息給個人,只需要個人的 User ID 即可,可以透過Line官網或其他方式取得。

  • 如果是同一個人建立的多個群組,對這個建立者來說,他在這些群組裡的 User ID 是一樣的。但群組本身的 Group ID 仍然是不同的。

Line Bot 訊息傳送限制與額度

  • 權限: 只有被加入該群組的Line機器人,才能使用該群組的ID來傳送訊息。

  • 免費額度: Line Bot的免費方案有訊息傳送數量限制。根據影片資訊(2023/03),當時每月免費額度約為200則。訊息量的計算方式是「傳送次數 x 群組人數」。例如,群組有5人,傳送一次就算5則訊息。剩餘額度可以在Line Official Account Manager後台查詢。(請注意:免費額度與政策請以Line官方最新公告為準

  • 機器人數量: 一個Line群組只能加入一個LineBot機器人。

操作步驟

A. 僅需傳送訊息給「個人」

如果你只需要傳送訊息給單一使用者,步驟相對簡單:

  1. 申請LineBot機器人 (取得 Channel ID 和 Channel Secret)。

  2. 取得該機器人的 Channel Access Token (訊息發送憑證)。

  3. 取得目標使用者的個人 Line ID (User ID)。

  4. 即可使用相關工具或程式碼發送訊息。

B. 查詢「群組ID」並傳送訊息 (使用Google Apps Script)

這個方法需要搭配Google試算表和Apps Script來實現ID查詢和訊息發送。

1. 建立與設定機器人 (Bot)

  • 申請 Line Bot: 你需要先到 LINE Developers Console 建立一個 Messaging API Channel (即 Line Bot)。記下 Channel ID 和 Channel secret

  • 取得 Channel Access Token: 在你的 Bot 設定頁面中,找到 "Messaging API" 標籤,往下找到 "Channel access token (long-lived)",點擊 Issue 按鈕產生一組長效型的 Token,這就是之後發送訊息需要的憑證。請妥善保管。

  • 允許加入群組: 前往 LINE Official Account Manager,登入並選擇你的機器人。

    • 點選左側選單「帳號設定」>「功能切換」。

    • 將「加入群組或多人聊天室」選項設定為「接受邀請加入」。

  • 關閉自動回應 (重要):

    • 點選左側選單「回應設定」。

    • 在「基本設定」中,確認「回應模式」為「聊天」(Bot模式)。

    • 在「詳細設定」中,將「自動回應訊息」功能 停用 (關閉)。這樣才能確保由我們的Apps Script完全接管回應。

2. 準備 Google Apps Script

  • 複製範本試算表: 點擊以下連結,複製一份Google試算表範本到你自己的Google雲端硬碟。

  • 填入 Token: 在你複製的試算表副本中,將步驟1取得的 Channel Access Token 完整貼到 B3 儲存格 (Line_Token 欄位)。B4 (LineID或群組ID) 先保持空白。

3. 部署 Apps Script 以接收 Webhook

  • 開啟指令碼編輯器: 在試算表點選「擴充功能」>「Apps Script」。

  • 部署為網頁應用程式:

    • 在 Apps Script 編輯器中,點選右上角的「部署」按鈕 >「新增部署」。

    • 在「選取類型」旁點擊齒輪圖示,選擇「網頁應用程式」。

    • 描述: (選填) 可自行輸入描述,例如 "Line Bot ID查詢"。

    • 執行身分: 選擇「我 (你的Google帳號)」。

    • 誰可以存取: 選擇「所有人」(這點很重要,Line平台才能呼叫)。

    • 點選「部署」。

  • 授權指令碼:

    • 首次部署會要求授權。點選「授權存取」。

    • 選擇你的 Google 帳戶。

    • 可能會出現「Google 尚未驗證這個應用程式」的警告畫面。請點選「進階」。

    • 接著點選「前往『LineBot查詢群組ID跟送訊息』(不安全)」。

    • 檢視要求的權限 (存取外部服務、試算表),確認無誤後點選「允許」。

  • 複製網址: 授權成功後,畫面會顯示「網頁應用程式」的網址。請複製這段網址,稍後會用到。點選「完成」。

4. 設定 Line Bot 的 Webhook

  • 回到 LINE Developers Console 中你的 Bot 設定頁面。

  • 找到 "Messaging API" 標籤。

  • 找到 "Webhook settings" 區塊。

  • 將上一步複製的 Apps Script 網頁應用程式網址 貼到「Webhook URL」欄位中。

  • 點擊「Use webhook」旁邊的開關,將其 啟用 (變成綠色)。

  • 點擊「Verify」按鈕測試連線是否成功 (應顯示 Success)。

5. 將 Bot 加入群組並查詢 ID

  • 使用你的 Line App,將這個設定好的 Line Bot 加入你想要查詢 ID 的目標群組。你可以透過掃描 Bot 的 QR Code (在 Messaging API 設定頁面可找到) 或使用其 Basic ID (@ 開頭那組) 來邀請。

  • 確認 Bot 已成功加入群組後,在該 群組聊天室 中發送訊息 ID (大小寫不拘)。

  • 如果一切設定正確,Bot 應會回傳類似以下的訊息:

    您的Line ID:Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    群組 ID:Cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 記下這串 群組 ID (C 開頭的)。

6. 使用群組 ID 傳送訊息

  • 回到你複製的 Google 試算表。

  • 將上一步查到的 群組 ID (C 開頭那串) 貼到 B4 儲存格 (LineID或群組ID 欄位)。

  • 在 B1 儲存格 (作業) 輸入你想傳送的訊息內容,例如:「大家好」。

  • 點擊試算表中的「傳送訊息」按鈕 (它會觸發 Apps Script)。

  • 檢查你的 Line 群組,應該就會收到來自 Bot 的「大家好」訊息了!

7. (選擇性) 清理

  • 如果你只是想查詢一次群組 ID,查詢完畢後,可以回到 Line Developer Console 的 Messaging API 設定頁面,將 Webhook URL 清除,並關閉「Use webhook」開關,以免 Bot 持續回應 "ID" 查詢或產生非預期的行為。

如何除錯?

如果在過程中遇到問題 (例如 Bot 沒有回應 ID 查詢,或發送訊息失敗):

  1. 回到 Google 試算表的 Apps Script 編輯器。

  2. 點選左側選單的「執行項目」(時鐘圖示)。

  3. 這裡會列出指令碼的執行記錄。你可以點開來看詳細的執行狀況和錯誤訊息 (如果有的話),這有助於判斷問題所在。例如,權限問題、Token 錯誤、Webhook URL 設定錯誤等。

總結

透過 Google Apps Script 和 Webhook 的結合,我們可以建立一個能夠查詢 Line 群組 ID 的機制,並利用取得的 ID 將訊息準確地發送到指定的群組。雖然設定步驟稍多,但完成後就能方便地進行自動化訊息推播。

希望今天的教學對你有幫助!



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

【AppSheet 教學】如何利用 Copilot 設定欄位條件格式化 (變更顏色、圖示、文字樣式)

今天這篇 AppSheet 教學,源自於有網友在我之前的影片留言,詢問如何將特定欄位(例如「高壓」欄位)的文字根據條件顯示成不同顏色(例如藍色)。這確實是一個很實用的功能,可以讓使用者快速識別重要資訊。 這次,我嘗試利用 Microsoft Copilot 來尋找解答,並將這個過...