90% 時間省下來!藥水系統成本效益分析 x 一鍵試算工具
工廠電鍍線想選最適合的藥水系統,往往被一堆成本數字搞到眼花撩亂。上次協助某電鍍廠,光是整理歷年消耗量、單價、異常維護費就做兩天,還要反覆算 ROI,手算爆炸。這工具能一鍵彙整藥水系統選項、輸入參數、即時計算,每次新案討論再也不用怕算錯或漏項。時間直接砍九成,評估效率大升,終於能把力氣用在判斷重點上。
一鍵複製:藥水系統成本效益分析儀表板
這個工具可以讓你快速輸入多組藥水系統方案,記錄歷史評估,同時自動計算各方案每年總成本、ROI 與成本差額,所有紀錄存在 Google Sheet,不怕遺失。
// === 電鍍藥水系統成本效益分析工具 ===
function doGet(e) {
var html = [];
html.push('<html><head>');
html.push('<style>body{font-family:sans-serif;'
+ 'padding:32px;background:#f4f8fc;}'
+ '.blk{background:#fff;padding:22px 30px;margin:18px auto;'
+ 'max-width:480px;border-radius:12px;box-shadow:0 2px 8px #ddd;}'
+ 'input,select{padding:6px 10px;font-size:1em;}'
+ '.tbl{width:100%;margin-top:22px;}'
+ '.tbl th,.tbl td{padding:6px 8px;border-bottom:1px solid #eee;}'
+ '.btn{background:#2168e8;color:#fff;padding:8px 26px;border:none;'
+ 'border-radius:4px;margin-top:10px;font-size:1em;cursor:pointer;}'
+ '.btn:hover{background:#1349a7;}</style>');
html.push('</head><body>');
html.push('<div class="blk"><h2>藥水系統成本效益評估</h2>'
+ '<form id="sysForm">'
+ '方案名稱:<input name="name" required><br><br>'
+ '藥水單價(元/L):<input type="number" name="price" min="0" step="0.1" required><br><br>'
+ '年消耗量(L):<input type="number" name="qty" min="0" required><br><br>'
+ '每年維護費(元):<input type="number" name="maintain" min="0" required><br><br>'
+ '產值提升(元/年):<input type="number" name="revenue" min="0" required><br><br>'
+ '<button class="btn" type="submit">加入評估</button>'
+ '</form>'
+ '<button id="refresh" class="btn" style="background:#24a878;margin-left:10px;">'
+ '刷新紀錄</button>'
+ '<div id="msg" style="margin-top:12px;color:#157c1b;"></div>'
+ '<div id="hist"></div></div>');
html.push('<script>');
// 前端 JS: 表單送出 & 刷新
html.push('document.getElementById("sysForm").onsubmit=function(e){'
+ 'e.preventDefault();var fd=new FormData(this);'
+ 'fetch("?save=1",{method:"POST",body:fd})'
+ '.then(x=>x.text()).then(res=>{'
+ 'document.getElementById("msg").textContent="儲存成功!";'
+ 'setTimeout(()=>{document.getElementById("msg").textContent="";},1200);'
+ 'loadHist();this.reset();});};');
html.push('document.getElementById("refresh").onclick=function(){loadHist();};');
html.push('function loadHist(){'
+ 'fetch("?hist=1").then(x=>x.json()).then(d=>{'
+ 'var h="<table class=\\"tbl\\"><tr>'
+ "<th>方案</th><th>年總成本</th>"
+ "<th>年產值提升</th><th>ROI</th></tr>";'
+ 'd.forEach(function(r){h+="<tr><td>"+r[0]+"</td>'
+ '<td>"+r[5]+"</td><td>"+r[4]+"</td><td>"+r[6]+"%</td></tr>";});'
+ 'h+="</table>";document.getElementById("hist").innerHTML=h;});}'
+ 'window.onload=loadHist;'
);
html.push('</script></body></html>');
return HtmlService.createHtmlOutput(html.join(''));
}
// 資料儲存與處理
function doPost(e) {
if (e.parameters.save) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('評估紀錄') || ss.insertSheet('評估紀錄');
if (sh.getLastRow() == 0)
sh.appendRow(['方案','單價','用量','維護','提升','總成本','ROI%','日期']);
var name = e.parameter.name;
var price = Number(e.parameter.price);
var qty = Number(e.parameter.qty);
var maintain = Number(e.parameter.maintain);
var revenue = Number(e.parameter.revenue);
var totalCost = Math.round(price*qty + maintain);
var roi = totalCost ? Math.round( revenue / totalCost * 100 ) : 0;
sh.appendRow([name, price, qty, maintain, revenue, totalCost, roi, new Date()]);
return ContentService.createTextOutput('OK');
}
return ContentService.createTextOutput('NG');
}
// 歷史紀錄查詢
function doGet_hist() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('評估紀錄');
if (!sh) return ContentService.createTextOutput('[]').setMimeType(
ContentService.MimeType.JSON);
var data = sh.getDataRange().getValues();
data = data.slice(1); // 去標題
var res = data.map(function(r){
// 只秀主要欄位
return [r[0], r[1], r[2], r[3], r[4], r[5], r[6]];
});
return ContentService.createTextOutput(JSON.stringify(res))
.setMimeType(ContentService.MimeType.JSON);
}
// 讓 JS 抓 ?hist=1 時會用到 doGet_hist
function doGet(e) {
if (e && e.parameter.hist) return doGet_hist();
return eval('('+doGet.toString()+')')(e); // 重導主畫面
}
// TODO: 欄位驗證、異常提示可加強
只要 6 步驟,馬上擁有自己的藥水系統評估表
照著來,不用怕出錯,每個細節都幫你顧好。
- 開啟 Apps Script 編輯器
動作:打開你的 Google 試算表,在最上方選單點「擴充功能」→「Apps Script」
位置:「擴充功能」大約在畫面中央偏右,點進去找「Apps Script」
結果:會跳出新分頁,進入白色的 Apps Script 編輯器
⚠️ 很多朋友公司帳號會被擋,我之前幫別人設過也遇過;還有瀏覽器擋彈窗的,記得關掉。
- 清空並貼上程式碼
動作:編輯器裡 Ctrl+A 全選,按 Delete 刪光,然後把上面那段全部貼進來(Ctrl+V)
位置:正中央白底的區塊,游標閃爍那邊
結果:原本那個 `function myFunction()` 消失,變成你剛貼的內容
⚠️ 千萬要整段貼滿、不要只貼一半,有朋友漏掉頭尾就一直出錯。
- 儲存專案
動作:點磁碟片圖示或按 Ctrl+S
位置:左上方工具列,磁碟片就是儲存
結果:第一次會跳出輸入專案名稱,想怎麼取都行
⚠️ 不存檔就部署,會有紅字出錯,我吃過這虧兩次(真心)。
- 部署為網頁應用程式
動作:右上角點藍色「部署」→「新增部署作業」
位置:右上角一排按鈕最右邊
結果:彈出一個新視窗,開始設定
子步驟:
1. 點齒輪圖選「網頁應用程式」
2. 執行身分選「我」
3. 誰可以存取選「任何人」
4. 按「部署」
⚠️ 「誰可以存取」務必選「任何人」;之前有主管設錯,只有自己能用,一天後才發現大家都卡死。
- 處理授權警告
動作:照畫面流程按步驟
結果:通常會出現紅色警告「Google 尚未驗證這個應用程式」
處理:點「進階」→「前往 XXX(不安全)」→「允許」
⚠️ 超多人看到紅字就嚇到,我一開始也心跳加快。這其實是因為我們是自己寫的、Google 還沒審核。沒問題!
- 取得網址,開始使用
動作:部署完成後,畫面會出現一個網址,點複製
位置:畫面中央顯示的 `https://script.google.com/...`
結果:貼去瀏覽器打開,就能看到分析表單了
⚠️ 有改內容要再部署一次,不然網頁永遠是舊的。朋友被這卡過,記憶點很深。
⚠️ 關於「Google 尚未驗證這個應用程式」的紅色畫面
每次部署自己的 Apps Script,Google 只要沒「人工驗證」就一定會顯示紅色警告。這不是中毒,也不是盜帳號,只是怕外部壞人亂用。你自己寫、自己授權,這步驟本來就該有。只要點進階→允許,沒別的問題。做給同事用時記得解釋,不然一堆人會來問你是不是有安全疑慮。穩。
現場評估、異動追蹤都好用的超高效率工具
有次老闆臨時問「三個藥水供應商方案哪個划算」,以前同事要臨時加班查紙本紀錄,還有漏寫單價欄搞錯數字。這工具一丟進群組,大家各自輸入方案數據,一分鐘內自動整理出年總成本、ROI,所有歷史資料永久存在 Sheet。維護費異動、用量變化,現場再刷新一次,最新差異馬上就有,不怕人為失誤。