ETH官方钱包

前往
大廳
主題

Google自動化:表單收到回應LINE通知(Messaging API版)

蜂蜜雪利酒 | 2024-12-20 23:40:17 | 巴幣 1016 | 人氣 17

先前發過一篇「Google自動化:表單收到回應Discord通知」的文,
作為LINE Notify的替代方案。收到大大回饋,提到LINE Messaging API

蛋魷魚抽不出時間找資料學,官方文件對我來說又太硬吃不下,
剛好老師教到ChatGPT,就請AI幫忙寫一段程式連接兩者,結果AI不負眾望寫出來啦!好耶!

再結合之前的程式,就能做到此次功能,分享給大家~

此篇文章可大致了解到以下內容:
1.如何連接LINE Messaging API 和 Google Apps Script
2.如何透過GAS
(1)實現提交表單時,LINE自動通知。
(2)取得試算表指定欄位。
(3)取得表單回應的資料。

那麼,開始做~?(ˊ?ˋ*)?

注意事項:
Messaging API免費版每個月配額是200則
想要更多配額,要購買方案,或可考慮其他替代服務,如Discord webhook。

操作步驟:
Step 1.申請LINE官方帳號並啟用LINE Messaging API
網上已有大大分享詳細教學,請從06:13開始,看到10:50
影片來源:國北教大-教育大數據微學程YouTube頻道

請先在LINE Developers記下兩個地方,等等會用到。
1.Channel Access Token
2.Your user ID
?小提醒:User ID是一長串英文,不是用戶自己創的那個ID,詳情可參閱官方說明(含取得user id方法)。
?小提醒:Channel Access TokenUser ID請小心不要外洩出去,避免被無聊人士拿去開心玩耍,發怪怪訊息

Step 2.把程式碼貼進Apps Script
打開表單回應的試算表,上方選單→擴充功能Apps Script
會看到以下畫面,請在紅框處貼入程式碼。
程式碼如下,請修改其中三行:
1.第4行:黃底處填入您的Channel Access Token
const channelAccessToken = '這裡填入您的Channel Access Token';
2.第6行:黃底處填入您要收到訊息的用戶LINE user ID
const userId = '這裡填入您要收到訊息的用戶LINE user ID';
3.第12行:黃底處填入您要顯示的LINE訊息,\n是換行的標記。
let msg = '吃通知?(*ˊωˋ*)?\n https://www.gamer.com.tw/ \n';
4.第14-33行:選用功能,可將申請人填寫的資料,顯示在訊息上,如用不到可刪除。
// 功能介紹:Messaging API連接Google Apps Script:Google表單收到回應後,傳送到指定用戶的LINE通知。

// 設定LINE Messaging API的Channel Access Token:這裡填入您的Channel Access Token
const channelAccessToken = '這裡填入您的Channel Access Token';
// 這裡填入您要收到訊息的用戶LINE user ID,要從LINE Developers管理者頁面取得,不是用戶自己創的ID。
const userId = '這裡填入您要收到訊息的用戶LINE user ID';

// trigger:Google表單提送觸發通知
function onFormSubmit(e) {

  // 這裡填入您要顯示的LINE訊息,\n是換行的標記。
  let msg = '吃通知?(*ˊωˋ*)?\n https://www.gamer.com.tw/ \n';

  // 選用功能:可將申請人填寫的資料,顯示在訊息上。(↓↓用不到可刪除。)
  // **請不要顯示包含個資的欄位,如:申請人真實姓名、信箱等。**
  let ss = SpreadsheetApp.getActiveSpreadsheet();
  let ws = ss.getActiveSheet();
  try {
    for(let i = 1 ; i<= ws.getLastColumn(); i++) {
      // 取得表單題目
      // 補充說明:getRange(橫的列,直的欄),從1開始計算
      let item = ws.getRange(1,i).getValue();
      // 取得表單回應
      let response = e.values[i-1];
      // 將回應填入訊息中
      msg += item + " : " + response + "\n";
    }
  } catch (err) {
      msg = "No Answers for message.\n\n";
      // 異常時進行紀錄
      Logger.log(err)
  }
  // 選用功能(↑↑用不到可刪除。)

  // 發送LINE訊息
  sendMessage(channelAccessToken, msg);
}

// 發送LINE訊息
function sendMessage(channelAccessToken, msg) {

  let message = {
    "to": userId,
    "messages": [
      {
        "type": "text",
        "text": msg
      }
    ]
  };

  // 設定 HTTP 請求選項
  let options = {
    "method": "post",
    "contentType": "application/json",
    "headers": {
      "Authorization": "Bearer " + channelAccessToken
    },
    "payload": JSON.stringify(message)
  };

  // 發送 POST 請求到 LINE API
  let response = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/push", options);
  
  // 輸出結果(檢查回應)
  Logger.log(response.getContentText());

  console.log(`發送LINE通知~`);
}

點選「磁碟片」按鈕儲存。

Step 3.新增觸發條件
左手邊選單→點選「觸發條件」→新增觸發條件
確認以下兩個地方後,點選「儲存」:
1.執行的功能為「onFormSubmit
2.選取活動類型修改為「提交表單時

Step 4.開放權限
這裡會要求您提供權限,點您的Google帳戶
點選「Allow

到表單裡,填一筆申請資料,然後送出!
成功~好耶~灑花?*??(ˊ?ˋ*)??*?

說明就到這裡,希望對大家有幫助。
從上次發佈那篇文,就沒再摸程式了,感謝大大給了我學習的動力,和得到和大家分享的機會

另外,分享我怎麼問ChatGPT,不用登入,直接問:「請幫我寫一段LINE messaging api 和 Google apps script 連結的程式,可以從Google apps script發訊息到LINE上」

辛苦了,謝謝大家
我要回去趕周末要發的小說了88888,希望不會鴿

創作回應

更多創作