DEKRA iST · 進階自動化

上百份規範比對|互動教學

三層漏斗 SOP + Apps Script 自動化。親手玩「清單比對」與「內容指紋」,看懂怎麼把上百份砍到只剩要細看的幾份。

先看懂

為什麼不能「全部丟給 AI」

上百份要比對,直覺是把新舊全丟給 AI。但會撞上三道牆:
📥

AI 單次讀取量有上限,上百份塞不進去

🌀

容易漏看,或把沒改的講得像改了(幻覺)

大部分時間浪費在「其實沒變」的九成文件上

正確做法:三層漏斗。用不花 AI、只比清單與指紋的前兩層,把上百份砍到只剩真正改過的幾份,AI 只處理最後這一小批。

三層漏斗

第一層 清單比對

找新增/刪除(不讀內容)· 工具:試算表 / Apps Script

上百份 → 秒篩

第二層 變更偵測

找哪些被改過(比版本或算指紋)· 工具:Apps Script

兩邊都有的 → 挑出改過的

第三層 內容比對

具體改在哪(列差異表)· 工具:NotebookLM / Gemini

只剩 5–10 份 → AI 細看
一句話:前兩層做「篩選」(機器做,快又便宜),第三層做「理解」(AI 或人做,精準)。
第一層

清單比對:找新增與刪除

不讀內容,只比清單。下面兩欄各貼一份清單(一行一份,用編號),按比對看它自動分出三種狀態。
新版清單
舊版清單
規範情境很好用:IPC 文件都有編號與版本(如 2.6.25 Rev C)。清單拉出「編號+版本」,新舊一比,新增與刪除立刻現形,一百份也是幾秒。
第二層

內容指紋:找哪些被改過

「兩邊都有」的那批才是重點。若版本號不可靠,就算「內容指紋」——每份文件內容算出一個指紋,指紋變了就是改過。親手試:改一個字,看指紋變化。
舊版指紋
新版指紋
指紋原理:內容沒變 → 指紋相同(判定沒改);只要改一個字 → 指紋就不同(判定改了)。幾秒內就能把一百份篩成「這 8 份改過、其他 92 份沒動」。
你的情況(版本不一定可靠):建議以內容指紋為主、版本日期為輔。指紋不受「有沒有填版本號」影響,最可靠。
第三層

內容比對:只對改過的幾份

經過前兩層,一百份可能只剩五到十份需要細看。這才輪到 AI——因為只剩幾份,它讀得完、讀得準,還附出處。
我上傳了同一份規範的新版與舊版。 請列出兩者差異:哪些條件改了、哪些段落新增或刪除, 用表格呈現:項目、舊版、新版、變更說明。 只根據我上傳的兩份文件,不要自行補充。
這就是三層的分工:機器用清單和指紋把範圍縮到最小,AI 只在最後做它最擅長的「讀懂差異」。
實作 · Apps Script

用 Apps Script 自動化

Apps Script 擅長它該做的:掃 Drive、比清單、算指紋、排程、寄 Gmail;「讀懂差異」才交給 AI。腳本可直接複製使用。

能與不能

工作Apps Script
掃 Drive 資料夾、列清單✅ 擅長
比清單找新增/刪除✅ 擅長
算內容指紋、偵測變動✅ 擅長
每週自動跑、寄 Gmail✅ 擅長
抓外站 PDF、解析內文⚠️ 吃力
智慧比對內容差異❌ 交給 AI
務實架構:你的檔案有些在外站、版本不一定可靠——不讓腳本去外站硬抓,改由人工把新版下載進一個指定的 Drive 資料夾,之後偵測、比對、通知全自動。

腳本一:建立指紋基準(第一次跑)

function 建立基準() { var 資料夾 = DriveApp.getFolderById("你的資料夾ID"); var 表 = SpreadsheetApp.getActiveSheet(); 表.clear(); 表.appendRow(["檔名", "指紋", "更新時間"]); var 檔案 = 資料夾.getFiles(); while (檔案.hasNext()) { var f = 檔案.next(); var 指紋 = 算指紋(f.getBlob().getBytes()); 表.appendRow([f.getName(), 指紋, f.getLastUpdated()]); } } function 算指紋(bytes) { var d = Utilities.computeDigest( Utilities.DigestAlgorithm.MD5, bytes); return d.map(function(b){ return (b & 0xFF).toString(16); }).join(""); }

腳本二:每週偵測變動並寄信

function 每週檢查() { var 資料夾 = DriveApp.getFolderById("你的資料夾ID"); var 表 = SpreadsheetApp.getActiveSheet(); var 舊 = {}; var 資料 = 表.getDataRange().getValues(); for (var i = 1; i < 資料.length; i++) 舊[資料[i][0]] = 資料[i][1]; var 新增 = [], 修改 = [], 現在 = {}; var 檔案 = 資料夾.getFiles(); while (檔案.hasNext()) { var f = 檔案.next(); var 指紋 = 算指紋(f.getBlob().getBytes()); 現在[f.getName()] = 指紋; if (!(f.getName() in 舊)) 新增.push(f.getName()); else if (舊[f.getName()] !== 指紋) 修改.push(f.getName()); } if (新增.length || 修改.length) { var 內文 = "本週規範異動:\n\n【新增】\n" + (新增.join("\n")||"無") + "\n\n【修改】\n" + (修改.join("\n")||"無"); MailApp.sendEmail("你的信箱@dekra.com", "規範異動通知", 內文); } 更新基準(表, 現在); }

設定每週自動執行

1Apps Script 編輯器左側點「觸發條件」(時鐘圖示)
2點「新增觸發條件」
3函式選「每週檢查」、來源選「時間驅動」、類型選「週計時器」,設定星期時段
4儲存。之後每週自動跑,不必開電腦
首次執行會要求授權:Google 會跳出授權畫面,要你同意腳本讀取 Drive 與寄信。這是正常程序,同意後才能運作。
串起來

完整流程與邊界

步驟做什麼誰做頻率
放檔新版規範放進指定 Drive 資料夾人(含外站下載)隨時
偵測算指紋、比基準、挑出新增與修改Apps Script每週自動
通知寄信列出異動清單Apps Script有異動才寄
比差異對異動的幾份用 AI 列差異表人+NotebookLM收到信後
務實的自動化:機器負責「每週盯著、挑出異動、通知你」,你只需在收到通知後,對真正改過的那幾份做最後的內容比對與判斷。

邊界與提醒