🗂️ 這是什麼・要花多久・要準備什麼
把 LINE 裡別人傳給你的檔案(保單、照片、影片…),自動存一份到你自己的 Google Drive,永久保留,不會過期就抓不到。整套系統是你自己的 LINE 官方帳號 + 你自己的 Google Drive + 你自己的一小段程式,完全免費,不用委託任何人維護。
你唯一需要的就是這個網頁的網址——把它加到書籤,中途關掉隨時可以回來接著做。
建議照 ①→②→③→④→⑤→⑥ 的順序、一次做完不要中斷。中途關掉分頁也沒關係,你填過的內容都留在這台電腦的瀏覽器裡,回來會自動接著上次的進度。全部完成後,記得到⑥分頁按一鍵清除,把這台電腦上的暫存資料清乾淨。
🧭 ① 準備
開始之前,先把 5 件事準備好。每一步都有「怎麼做?」可以展開看詳細步驟,不趕時間慢慢做即可。
怎麼做?
- 點上面「開啟 Google Drive」連結(會開新分頁)
- 左上角按「+ 新增」→「新資料夾」
- 取個好記的名字,例如「LINE存檔」
- 建立後雙擊打開這個資料夾,準備進行下一步
怎麼做?
- 確認你已經打開剛剛建立的資料夾
- 看瀏覽器最上面的網址列,網址長得像:
https://drive.google.com/drive/folders/1AbCdEfGhIjKlMnOpQrStUvWxYz - 把「整段網址」複製起來(Ctrl+C),貼到下面的輸入框,會自動幫你抓出中間那串 ID
怎麼做?
- 點上面「LINE Official Account Manager」連結
- 用你的 LINE 帳號或 Email 登入
- 按「建立帳號」,依畫面填寫:帳號名稱(例如「XX保經檔案小幫手」)、所在地區、行業別
- 完成後會自動進入該帳號的後台管理畫面,你會看到左側一排選單、上方是這個帳號的名稱與大頭貼
怎麼做?
⚠️ 這一步要在「LINE Official Account Manager」做,不是在 Developers Console。 在 OA Manager 建立的官方帳號,不會自動出現在 Developers Console;要先在這裡啟用,它才會冒出來。 如果你現在打開 Developers Console,看到的是一片空白、或寫著「Provider not found」,那是正常的,不代表你哪裡做錯了,只是還沒做這一步而已,往下看。
- 回到 LINE Official Account Manager(剛剛建好帳號的那個後台),確認上方選的是你要用的帳號
- 點右上角的 ⚙️ 設定
- 左側選單找到並點 Messaging API
- 點 「啟用 Messaging API」 按鈕
- 若是第一次使用開發者功能,會要你填姓名與 Email 做開發者註冊,填完繼續
- 接著要選擇或建立 Provider(服務提供者)。畫面上會列出你名下已有的 Provider(如果有的話),或給你建立一個新的,名稱填自己的名字或公司名皆可(例如「王小明」或「◯◯保經」)
⚠️ Provider 一旦指派給這個帳號就無法更改或解除,取名建議通用一點,之後如果還想開別的 LINE 機器人可以共用同一個。
🚫 絕對不要因為 Developers Console 是空的,就跑去按「Create a new provider」自己在 Console 那邊建一個 Messaging API channel。那樣做會憑空再開一個全新的官方帳號,跟你剛剛在 OA Manager 建好的那個完全無關,等於白做一次、還多一個用不到的帳號。正確做法永遠是「先在 OA Manager 啟用,Provider 才會自動在 Console 冒出來」。 - 啟用成功後,頁面會出現 Channel ID 與 Channel secret,代表完成(這兩個本程式用不到,不用複製)
- 此時再打開 LINE Developers Console,就會看到剛剛的 Provider 和底下的 Channel 了——這時候才是正常會看到東西的時間點
怎麼做?
- 打開 LINE Developers Console(上面的連結),用同一組帳號登入
- 左側點你剛建立的 Provider → 點底下的 Channel(名稱就是你的官方帳號名)
- 上方分頁切到 Messaging API,往最下面捲
- 找到「Channel access token (long-lived)」欄位
- 按「Issue」(發行)按鈕,會產生一長串英數字
- 整串複製起來,稍後貼到②分頁的表單。這串請勿外流給任何人,等同帳號密碼
⚙️ ② 產生程式碼
填好下面的表單,右下方會即時產生你專屬的 CONFIG 設定區塊,等一下貼到 GAS 的 Code.gs 最上面就好。
如果不是你本人剛剛填的,請先按下面「清除全部暫存資料」再開始,避免把自己的設定跟別人的舊資料混在一起。
📄 產生的 CONFIG 設定區塊
等一下把整段複製,貼到 GAS 編輯器裡 Code.gs 檔案最上方,取代原本空白的 CONFIG。
🚀 ③ 部署
把程式碼放到 Google Apps Script(GAS)上跑起來,最後拿到一個網址,等一下④分頁要用。
appsscript.json,點開後把內容整個換成下面這份。
Code.gs,把最上方 const CONFIG = { ... }; 整段換成②分頁複製的內容。如果你之前已經貼過一次舊版,記得整段取代,不要留下混雜新舊內容的半套設定。
💾 三個檔案(Code.gs、appsscript.json、CONFIG)都貼完之後,按一次 Ctrl+S(或點左上角雲朵圖示)存檔,確認分頁標題旁邊的小圓點消失,代表存檔成功,再繼續下一步執行 setupCheck。
setupCheck → 按執行(▶)。第一次會跳出「需要授權」的視窗:
- 選你的 Google 帳號
- 如果出現一個標題寫著「Google 尚未驗證這個應用程式」的畫面,這是正常的(因為這是你自己的私人程式,沒有送去給 Google 審核,本來就不會有「已驗證」標章)。點左下角的「進階」,再點「前往『LINE存檔小幫手』(不安全)」——這裡的「不安全」指的只是「未經 Google 審核」,不代表程式本身有問題,因為程式碼是你自己貼上去的,你看得到裡面在做什麼
- 接下來會看到一頁要你「允許」的權限清單,通常會列出 4 項,請全部勾選、全部允許,理由如下:
/exec)。
原因:每按一次「新增部署作業」都會產生一個全新的網址,但你已經把舊網址貼給 LINE 了——LINE 還在打舊網址,新網址跟舊網址是兩個完全獨立的東西,改的是新的、LINE 打的是舊的,等於改了等於沒改。而且專案裡如果同時存在「未命名」跟你正式在用的部署,很容易改錯邊。想確認自己有沒有改對,可以在「管理部署作業」列表裡比對部署開頭那串 ID,跟你貼給 LINE 的網址裡
/s/ 後面那段是不是一致。
🔗 Webhook URL 組裝器
貼上第 7 步複製的 /exec 網址,自動幫你接上 ?k= 密鑰。這個網址等一下要在④分頁貼到 LINE。
✅ 部署完成自我檢查
🔌 ④ 接線與驗收
把網址交給 LINE、關掉會擋住你的內建設定,最後用「實際傳一個檔案」來確認真的成功了。
等一下你會在 LINE Developers Console 把網址貼進「Webhook URL」欄位,旁邊有個「Verify」按鈕。不管你設定得多正確,這個按鈕永遠不會顯示成功,你會看到下面兩種錯誤訊息其中一種:
— 或 —
A timeout occurred when sending a webhook event object
為什麼會這樣:Google Apps Script 這個平台,對所有 POST 請求一律回傳 302 轉址,這是 GAS 的天性,寫程式的人完全改不掉。LINE 的「Verify」功能不會跟著轉址走,看到 302 就直接判定失敗;有時候則是 GAS 剛好在「冷啟動」(沒人用一陣子後第一次被叫醒,要多花幾秒才會有反應),LINE 等不到 2 秒內的回應,就顯示逾時。
但這完全不影響實際運作。GAS 是「把你的程式從頭到尾真的跑完」之後才回那個 302 的——也就是說,等 LINE 看到 302 的當下,檔案其實早就已經存進你的 Google Drive 了。
今天實際用 curl 直接對這種 /exec 網址發一個 POST 請求做測試:回應是 302,轉址的目標網址是 script.googleusercontent.com/macros/echo(這是程式執行完的輸出結果,不是登入頁面),整個過程只花了 1.33 秒。(小提醒:如果權限設定真的有問題,轉址目標會變成 accounts.google.com 的登入頁,跟正常情況轉址到 echo 看起來不一樣,可以用這點分辨是不是真的出錯了。)
?k=)→ 按「Update」存檔。
🔕 關閉自動回應訊息 —— 這一步最容易漏掉,請獨立看一次
如果你設定完之後「傳檔案完全沒反應」,九成都是卡在這裡,不是網址或 token 的問題。
🔎 怎麼確認自己中招了:打開跟這個官方帳號的對話,如果聊天室最上方顯示一行「此官方帳號正在自動回覆訊息」,就是這個問題。這代表 LINE 內建的「自動回應訊息」功能還開著——它會自己回一句「感謝您的訊息!很抱歉,本帳號無法個別回覆用戶的訊息…」,而且根本不會把你傳的檔案轉給我們的程式(webhook),所以程式那邊完全不知道你傳過東西,當然也不會有任何備份、任何回覆。
- 自動回應訊息 → 關閉(這是元兇,一定要關)
- Webhook → 開啟(跟前面③分頁的 Use webhook 是不同介面的同一件事,這裡也要確認是開的)
- 聊天 → 關閉(這是「真人客服手動聊天」模式,會跟程式自動回覆互相干擾)
- 加入好友的歡迎訊息 → 關閉(避免多出一則跟程式無關的罐頭訊息)
✅ 怎麼確認真的成功了
🩺 傳了沒反應?分流排查表
照下面表格從上到下比對你看到的狀況。
| 你看到的狀況 | 最可能的原因 | 怎麼解 |
|---|---|---|
| 聊天室最上方顯示「正在自動回覆訊息」 | 自動回應訊息還開著,訊息根本沒轉給程式 | 照上面「關閉自動回應訊息」整段重做一次 |
| 完全沒反應,也沒有任何自動回覆提示 | 「Use webhook」開關沒打開,或程式碼改完忘記部署新版本 | 回④第3步確認開關;回③檢查是否已按過「建立新版本」部署 |
| 之前正常用,某天開始突然沒反應 | 改過 CONFIG 卻改錯部署(改到「未命名」而不是 LINE 實際在用的那個),或 token 被重新簽發失效 | 回③比對部署 ID 是否與貼給 LINE 的網址一致;回①第5步重新取得 token |
| 收到「⚠️ 檔案備份失敗」的訊息 | 訊息裡的「原因」已經寫清楚了,常見是 ROOT_FOLDER_ID 填錯或 Drive 容量滿 | 照訊息裡的原因處理,回②確認資料夾 ID 是否正確 |
| 私訊有反應,但拉進群組後沒反應 | bot 預設不能被拉進群組,這個開關在另一個獨立介面 | LINE Developers Console →「Messaging API」分頁 → 打開「Allow bot to join group chats」,再把 bot 重新邀請進群組一次 |
| 「Verify」按鈕顯示失敗 | 這是 GAS 平台的正常現象,不是你的錯 | 忽略它,改用「傳一個檔案」驗證(見上方巨大警示) |
✅ 接線與驗收自我檢查
🔒 ⑤ 上鎖與疑難排解
④分頁驗收成功、確定系統能正常運作之後,才建議做這一步;接著是把 1~9 個常見狀況整理成問答,找不到答案時翻這裡。
🔐 只給自己用(白名單)
LINE 官方帳號預設任何人只要搜到你的 @ID 就能加好友,加了之後對方只要傳檔案,就會存進「你的」Google Drive——不只是隱私問題,別人傳的檔案愈多,愈快塞爆你的雲端空間。設定白名單之後,只有清單裡的對話(群組/聊天室/私訊)能觸發備份,其他人傳了也不會有任何反應。
⚠️ 順序不能反:一定要先確認④分頁已經驗收成功(能正常收到檔案),才做這一步。原因是「雞生蛋」問題——取得 sourceId 要靠 /id 指令,但 /id 指令本身也受白名單管制;如果你在還沒驗證系統正常運作、或還沒拿到自己 sourceId 之前就填了白名單,很可能連你自己都被擋在外面,看起來就像系統整個壞掉。
setupCheck,按執行。看下方「執行記錄」,裡面有一段「📂 目前已建立的來源 → 資料夾綁定」,會列出目前每個對話的識別碼與資料夾連結,前面那串又長又亂的英數字就是 userId/sourceId。
前提:這個對話要已經成功備份過至少一個檔案(也就是④分頁的驗收步驟要先做完),不然這份清單裡不會有東西。
此方法還需要②分頁「依群組名/好友名分子資料夾」保持開啟(預設即為開啟);如果你把這個選項關掉了,這份清單會是空的,請改用下面方法2(私訊打 /id)取得。
/id 送出,bot 會回覆你的識別碼與對話類型(私訊/群組/聊天室)。想鎖群組,就在該群組裡打這個指令。Code.gs → 回③分頁「管理部署作業」→ 編輯 → 建立新版本 → 部署(這步最容易忘記,忘了做的話白名單不會生效)。
🩹 疑難排解 Q&A
照「症狀 → 為什麼 → 怎麼解」的順序排列,點標題展開內容。
Developers Console 是空的、或寫「Provider not found」
setupCheck 印出的網址結尾是 /dev,貼到 LINE 沒用
/dev,這個網址只有你本人登入 Google 才打得開,LINE 的伺服器打過去只會被導到登入頁面,永遠收不到你傳的內容。/exec 的正式網址才能用。setupCheck 執行紀錄本身也會主動偵測到 /dev 網址並提醒你。按「Verify」失敗,顯示 302 或逾時錯誤
傳檔案完全沒反應,聊天室頂端寫著「正在自動回覆訊息」
改了程式碼,但 LINE 完全沒反應
專案裡好像有兩個部署,不確定改的是不是 LINE 在用的那個
/macros/s/ 後面那段比對,一致的才是 LINE 正在用的那個,只能編輯那一個。絕對不要按「新增部署作業」,那會產生全新網址,讓 LINE 那邊直接失效。第一次設定好,bot 完全沒反應,不知道是不是 token 或 Drive 設定錯了
setupCheck 函式 → 按執行 → 跳出視窗選帳號 →「進階」→「前往(專案名稱)(不安全)」→「允許」,四項權限全部勾選(見③分頁第6步的完整說明)。跑完看下方「執行記錄」是不是每一項都打勾。Google 授權畫面寫「會查看、編輯、建立及刪除你 Drive 中『所有』檔案」,看起來很嚇人
在群組裡傳檔案沒反應(但私訊有反應)
(b) LINE Developers Console → 你的 Channel →「Messaging API」分頁 → 打開「Allow bot to join group chats」。
兩邊都要開,之後要把 bot 重新邀請進群組一次才會生效。
填了「白名單 ALLOWLIST」後,會不會不小心把自己也擋掉
/id 指令取得,複製貼進白名單欄位,記得也要把自己會用到的對話都加進去。不知道 QUIET_MODE(安靜模式)該不該開
偶爾同一批檔案裡少一兩個沒存到,卻沒有任何錯誤訊息
/stats、/last 核對數量,發現少了再請對方補傳。同一個檔案在 Drive 裡出現了兩份一模一樣的
skip 當作額外保險。收到「檔案備份失敗:超過上限」的訊息
影片或語音檔傳了,Drive 完全沒出現,也沒收到失敗訊息
/last 確認是否補上;若持續沒有,建議請對方改傳原始檔或分段傳送。加進「多人聊天室」後,資料夾名稱變成「聊天室_XXXXXX」這種怪名字
什麼都沒改,某天突然全部功能失效
放了很久沒用,某天突然發現 bot 完全沒反應
不確定「回覆」跟「主動推播」差在哪,會不會被扣免費額度
不知道 GAS 有沒有使用量上限,會不會用一用就被鎖住
畫面顯示「已收到檔案」,但 Drive 資料夾裡找不到
/folder 指令,會直接回傳「這個對話」對應資料夾的 Drive 連結,點開就對了。群組改名了會怎樣?備份會不會分散到兩個資料夾?
/folder,看到的仍然是同一個 Drive 連結(可能會多印一行「名稱不一致」的中性提示,不代表有問題)。我可以自己把 Drive 資料夾改名嗎?會不會弄壞備份?
/folder,看到的仍然是同一個資料夾連結。我不小心手動刪掉了某個來源的資料夾,怎麼辦?
setupCheck() 看綁定列表即可。若是手動搬動(不是刪除)過好幾個來源資料夾、想讓所有對話重新乾淨配對一次,可以在 GAS 編輯器手動執行 resetBindings()——這只會清空對應記錄,不會刪除任何 Drive 資料夾或檔案。怎麼知道哪個群組存到哪個資料夾?
setupCheck,按執行,下方「執行記錄」會列出目前所有「來源 → 資料夾」的對應,包含資料夾名稱跟可以直接點開的 Drive 連結(同一份清單也是取得 userId 的免手機方法,見上方「上鎖」說明)。也可以在個別對話裡打 /folder 查詢那一個對話的資料夾連結。🎉 ⑥ 完成收尾
確認所有里程碑都完成之後,記得回來這裡清掉這台電腦上的暫存資料。清除之後,你的 LINE 備份功能不受任何影響,會繼續正常運作。
📋 完成摘要
下面列出全部 10 個里程碑的完成狀態,跟頁首的整體進度是同一份資料,勾選狀態會即時同步。
🧹 收尾清單
- 改過設定(CONFIG、白名單…)之後,一定要回③分頁「管理部署作業」→ 編輯 → 建立新版本 → 部署,單純存檔不會自動生效。
- 如果專案裡同時有好幾個部署,一定要改對「LINE 正在用的那一個」,比對部署 ID 是否跟貼給 LINE 的網址一致。
- LINE Developers Console 裡的「Verify」按鈕永遠會顯示失敗,這是 GAS 平台的正常現象,不代表設定錯誤,忽略即可。