先說結論
嗯,今天要來聊的這個...很多人問,就是 Google Sheets,那個試算表,要怎麼跟 LINE 連動,就是,呃,試算表上面有什麼變化,就自動傳個訊息到 LINE。先說結論,這完全做得到,而且是免費的。你只要用一個叫做 Google Apps Script 的東西,嗯...可以把它想像成是 Google 服務專用的一個...一個小機器人程式,你叫它做事,它就做事。設定是有點繁瑣啦,但弄過一次之後就很快了。
為什麼需要這個?有哪些應用情境?
好,那在講怎麼做之前,要先想一下,為什麼要用這個功能?我自己是覺得,這可以把手動檢查的動作,變成自動提醒,超方便的。你想想看喔:
- 新訂單通知:如果你的訂單記錄是用 Google Sheets,那每次有新的訂單進來,就可以馬上傳一個 LINE 通知給你,或是傳到公司的業務群組。 - 庫存水位警告:這也超實用。比方說,你在 Sheet 上面管理庫存,當某個商品的數量低於一個安全值,比如說 10 個,它就自動發 LINE 跟你說「喂,那個 A 商品該補貨了!」。
- 每日數據回報:你可以設定每天固定一個時間,比如說早上九點,自動抓取試算表裡的幾個關鍵數字,像是昨天的營業額、網站流量,然後整理成一則訊息發到你的 LINE,就不用自己每天早上還要打開電腦看。
- 專案進度追蹤:團隊可以用啊,例如某個任務的狀態從「進行中」被改成「已完成」,就自動通知專案經理。
簡單講,就是任何你在試算表上記錄的、而且需要你...呃...即時注意的數據變化,都可以用這個方法來做自動化。
怎麼做?設定步驟大拆解
好,重頭戲來了。整個過程...嗯...我把它分成三個主要步驟:第一,你要先跟 LINE 申請一個「鑰匙」;第二,你要在 Google Sheets 裡面打開那個「程式編輯器」;第三,把程式碼貼進去,然後設定「何時觸發」。聽起來很複雜,但跟著做一次就好。
步驟一:取得 LINE Notify 的權杖 (Token)
這個權杖 (Token) 就是那把鑰匙,有了它,你的程式才能打開 LINE 的門,把訊息送進去。
- 首先,你得去 LINE Notify 的官方網站。 Google 搜尋「LINE Notify」第一個就是了。
- 進去之後,用你的 LINE 帳號登入。
- 登入後,點右上角你的名字,然後選「個人頁面」。
- 往下滑,會看到一個很明顯的按鈕,叫做「發行權杖」。 點下去。
- 接下來,它會問你兩件事:第一,這個通知要叫什麼名字,隨便取一個你好記的,例如「我的訂單通知」。第二,你想要把通知傳到哪裡?你可以選「透過1對1聊天接收LINE Notify的通知」,這樣就只會傳給你自己。或者,你也可以選一個你所在的群組,這樣群組裡所有人都會收到通知。 如果要傳到群組,記得事後要把「LINE Notify」這個官方帳號也邀請到那個群組裡喔。
- 都選好之後,按下「發行」。然後!然後!最重要的一步來了!它會給你一長串亂碼,那個就是你的權杖。你一定要立刻把它複製下來,貼到一個安全的地方,因為這個畫面關掉之後,你就再也看不到這組權杖了! 真的,忘記了就只能重新申請一個。
步驟二:打開 Google Apps Script 編輯器
鑰匙拿到了,現在我們回到 Google Sheets 這邊。
- 打開你想要自動化的那個 Google 試算表。
- 點上面選單的「擴充功能」,然後選「Apps Script」。
- 這時候會跳出一個新的分頁,就是 Google Apps Script 的程式碼編輯器。 可能看起來有點...嗯...工程師的感覺,但別怕,我們大部分時間只是在複製貼上而已。
步驟三:貼上程式碼與設定觸發條件
好,現在就是把鑰匙跟門鎖組裝起來的時候了。
首先,把編輯器裡面原本有的那幾行程式碼...呃...都刪掉,清空它。然後貼上這段程式碼:
function sendLineNotification(message) {
const token = '這裡貼上你剛剛複製的LINE Notify權杖';
if (token === '這裡貼上你剛剛複製的LINE Notify權杖' || !token) {
console.log('權杖未設定,請檢查程式碼。');
return;
}
const url = 'https://notify-api.line.me/api/notify';
const options = {
'method': 'post',
'headers': {
'Authorization': 'Bearer ' + token
},
'payload': {
'message': message
}
};
try {
const response = UrlFetchApp.fetch(url, options);
console.log(response.getContentText());
} catch (e) {
console.log('傳送失敗:' + e.toString());
}
}
// ----- 以下是觸發用的範例,你可以根據需求修改 -----
// 範例一:當試算表被「編輯」時觸發
function onEdit(e) {
// e.range 是被編輯的儲存格
// e.value 是編輯後的新值
// e.oldValue 是編輯前的舊值
const range = e.range;
const sheet = range.getSheet();
// 假設我們只監控 "工作表1" 的 B 欄
if (sheet.getName() === "工作表1" && range.getColumn() === 2) {
const row = range.getRow();
const product = sheet.getRange(row, 1).getValue(); // 取得 A 欄的產品名稱
const status = e.value; // B 欄的新狀態
const message = `\n【進度更新】\n產品:${product}\n狀態:${status}`;
sendLineNotification(message);
}
}
貼上去之後,記得,把 `const token = '這裡貼上你剛剛複製的LINE Notify權杖';` 這行,換成你自己的那把「鑰匙」。
再來,就是設定「觸發條件」(Trigger)。這個超重要,它決定了程式什麼時候要跑。 Google Apps Script 有很多種觸發條件,但最常用的就兩種:
- 簡易觸發 (Simple Trigger): 像上面程式碼裡的 `onEdit(e)` 就是。 它的意思是「當這個試算表的任何一個儲存格被編輯時」,就自動執行這個函數。 你不用另外設定,只要你的函數名稱是 `onEdit`,Google 就會認得它。 這是最即時的。
- 時間驅動觸發 (Time-driven Trigger): 這個就要手動設定了。你可以在左邊的選單點那個「時鐘」圖案的「觸發條件」,然後按「新增觸發條件」。 你可以設定成「每小時」、「每天的某個時段」...等等。 這種就很適合做每日回報。
第一次執行的時候,Google 會跳出一個視窗,要求你授權這個程式執行。 你就點「審查權限」,選你自己的帳號,然後...它會跳出一個「這個應用程式未經驗證」的警告,看起來很可怕,但因為這是你自己寫的程式,所以是安全的。你點左下角的「進階」,然後「繼續前往 (不安全)」,最後允許它就對了。
情境進階:客製化你的通知訊息
剛剛那段程式碼,最強大的地方其實在 `onEdit(e)` 那個函數。 你看喔,它不只是單純地送出「有東西被改了」,而是可以抓到「是哪個儲存格被改了」、「改成什麼內容」,然後把這些資訊組合成一則有意義的訊息。
比方說,`e.range.getSheet().getName()` 可以知道是哪個工作表被改動,`e.range.getColumn()` 可以知道是第幾欄,`e.value` 就是新的值。 透過這些,你就可以寫出像「`如果` 工作表是『庫存表』,`而且` 被改動的是第 3 欄 (數量欄),`而且` 新的數值小於 10,`那就` 發出補貨通知」這樣的邏輯。
| 觸發方式 | 適合情境 | 優點 | 缺點 / 注意事項 |
|---|---|---|---|
| onEdit() 簡易觸發 | 需要即時反應的,像是新訂單、狀態更新。 | 反應超快,幾乎是馬上通知。 | 如果你一直頻繁編輯,它就會一直傳訊息,會很吵。而且要注意,程式邏輯沒寫好可能會造成無限迴圈。 |
| 時間驅動觸發 | 做摘要報告用的,像是每日銷售總結、每週任務盤點。 | 固定時間才發,不會打擾。適合彙總型的資訊。 | 就...不是即時的啊。如果設定一天一次,那你可能晚上才會知道早上發生的事。 |
結語
嗯...大致上就是這樣。說真的,第一次設定會覺得有點卡,特別是那個授權的部分,還有程式碼要改對地方。但是,只要成功設定好一個,之後要做好幾個就很快了。把一些重複檢查的動作交給機器人,省下來的時間拿去...呃...做更重要的事,還是挺不錯的。
那你呢?如果你可以用這個功能,你會想拿來自動化你試算表裡的什麼通知?是記帳提醒、待辦事項追蹤,還是有什麼更有創意的用法?在下面留言分享看看吧!
