塑膠射出報價一秒查:懶人行情試算小幫手
每次要問「這個零件大概多少錢?」是不是都要私訊三個代工廠、還要比對對方講的「模費」跟「單價」差多少,搞到最後頭都暈。之前有朋友自己 Excel 算一輪還常常忘記記錄,下次又要重來一次,超煩。來,我教你一招,用 Google Sheet + Apps Script,把所有報價都自動記下來,模具、單價、預估總價、統計紀錄一次看得懂,根本懶人包!
這段程式碼直接複製就能用
工具包含:射出條件輸入、即時算單價總價、自動寫進 Google Sheet、查歷史紀錄、常見行情參考一覽,給你2025最新實用行情參考。
// === 塑膠射出代工懶人行情小工具 ===
function doGet(e) {
var html = [];
html.push('<!DOCTYPE html><html><head>');
html.push('<meta charset="UTF-8">');
html.push('<title>塑膠射出報價查詢懶人包</title>');
html.push('<style>body{font:15px/1.7 sans-serif;'
+'background:#f8f9fa}label{display:block;margin:10px 0 2px;}'
+'.history{margin-top:20px;}table{width:100%;border-collapse:collapse;}'
+'th,td{border:1px solid #ccc;padding:5px;text-align:center;}'
+'button{margin:5px 0;}</style></head>');
html.push('<body><div style="max-width:430px;margin:32px auto;'
+'background:#fff;padding:28px 24px;border-radius:8px;'
+'box-shadow:0 0 10px #e2e2e2;">');
html.push('<h2>射出行情輕鬆算(2025)</h2>');
html.push('<form id="inputForm">');
html.push('<label>件數(PCS)</label><input type="number" id="qty" min="1" '
+'value="1000" style="width:120px;" required>');
html.push('<label>塑膠料類</label><select id="material">'
+'<option>ABS</option><option>PC</option>'
+'<option>PP</option><option>POM</option>'
+'<option>PA6</option><option>其他</option></select>');
html.push('<label>零件尺寸(最長邊, cm)</label>'
+'<input type="number" id="size" min="1" value="5" required>');
html.push('<label>外觀/精度需求</label>'
+'<select id="level"><option>一般</option>'
+'<option>高外觀(亮面)</option>'
+'<option>高精度(公差<0.05mm)</option></select>');
html.push('<label>常見行情參考</label><div style="background:#f7f7f7;'
+'font-size:14px;padding:6px 8px;margin-bottom:10px;">'
+'單價ABS: 3~9元/pcs PC/POM: 4~12元/pcs<br>'
+'模具費: 1萬~15萬,看外觀/尺寸</div>');
html.push('<button type="button" onclick="calcAndSave()">送出計算/紀錄</button>');
html.push('</form>');
html.push('<div id="resultBox" style="margin:10px 0;color:#0b7300;"></div>');
html.push('<div><button onclick="google.script.run.withSuccessHandler(loadHistory)'
+'.getHistory()">刷新紀錄</button></div>');
html.push('<div class="history" id="history"></div>');
html.push('<script>');
// 表單計算+寫入Sheet
html.push('function calcAndSave(){');
html.push('var q=parseInt(document.getElementById("qty").value)||0;');
html.push('var m=document.getElementById("material").value;');
html.push('var s=parseInt(document.getElementById("size").value)||0;');
html.push('var l=document.getElementById("level").value;');
html.push('var single=estimateUnit(m,s,l);var mold=estimateMold(s,l);');
html.push('var amt=single*q+mold;');
html.push('document.getElementById("resultBox").innerText="單價約"+single+"元,'
+'模具費"+mold+"元,總價約"+amt+"元";');
html.push('google.script.run.saveRecord(q,m,s,l,single,mold,amt);');
html.push('}');
// 簡易估價邏輯
html.push('function estimateUnit(m,s,l){var base=4;if(m=="ABS"||m=="PP")base=4;'
+'if(m=="PC"||m=="POM")base=6;else if(m=="PA6")base=7;'
+'if(s>=20)base+=3;if(l!="一般")base+=2;return base;}');
html.push('function estimateMold(s,l){var b=12000;if(s>15)b+=5000;'
+'if(l!="一般")b+=3000;return b;}');
// 歷史讀取
html.push('function loadHistory(arr){');
html.push('var d=document.getElementById("history"),t="";');
html.push('if(arr.length==0){d.innerHTML="目前無資料";return;}');
html.push('t+="<table><tr><th>日期</th><th>件數</th>'
+'<th>料類</th><th>單價</th><th>模費</th>'
+'<th>總價</th></tr>";');
html.push('for(var i=0;i<arr.length;i++){var x=arr[i];');
html.push('t+="<tr><td>"+x[0]+"</td><td>"+x[1]+"</td>'
+'<td>"+x[2]+"</td><td>"+x[4]+"</td>'
+'<td>"+x[5]+"</td><td>"+x[6]+"</td></tr>";}');
html.push('t+="</table>";d.innerHTML=t;}');
// 自動載入歷史
html.push('window.onload=function(){google.script.run.withSuccessHandler(loadHistory)'
+'.getHistory();};');
html.push('</script></div></body></html>');
return HtmlService.createHtmlOutput(html.join(""));
}
// 儲存紀錄到 Sheet
function saveRecord(qty, mat, size, lvl, unit, mold, amt) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('射出紀錄');
if (!sheet) sheet = ss.insertSheet('射出紀錄');
sheet.appendRow([
Utilities.formatDate(new Date(), "GMT+8", "yyyy-MM-dd HH:mm"),
qty, mat, size, unit, mold, amt
]);
}
// 讀取紀錄
function getHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('射出紀錄');
if (!sheet) return [];
var data = sheet.getDataRange().getValues();
return data.slice(-10); // 只顯示近10筆
}
// END
不用怕新手,跟我這樣做就行!
真的,這流程很直覺,照著來就沒問題~
- 打開 Apps Script 編輯器
動作:在 Google 試算表,點「擴充功能」→「Apps Script」
位置:上方選單,中間偏右那邊有個「擴充功能」
結果:會跳出新分頁,直接進入 Apps Script 編輯器
⚠️ 我有遇過有公司帳號被擋住打不開,這種就要用個人帳號啦。
- 全部貼上這段程式碼
動作:先全選(Ctrl+A),刪掉舊的,再貼上上面程式碼(Ctrl+V)
位置:編輯器正中央白底那一大片
結果:本來的 `function myFunction()` 會變成剛才這整包
⚠️ 之前有朋友忘記刪舊的,結果出錯,所以一定要清空才貼。
- 記得存檔喔
動作:點磁碟片圖案(或直接 Ctrl+S)
位置:編輯器上方最左邊那一排
結果:如果你第一次存,會跳出視窗讓你打個專案名稱
⚠️ 名稱打什麼都行,不會影響功能,不存直接部署會失敗!
- 部署成網頁應用程式
動作:右上角藍色「部署」→「新增部署作業」
位置:Apps Script 編輯器右上角
結果:會彈出一個新視窗設定
- 點右上齒輪,選「網頁應用程式」
- 執行身分選「我」
- 誰可以存取一定要「任何人」
- 點「部署」按鈕
⚠️ 有人會卡在「誰可以存取」沒選對,記得這步要注意。
- 授權紅色警告別怕
動作:依畫面流程,一路點允許
結果:會出現「Google 尚未驗證這個應用程式」的紅色警告
處理:點左下「進階」→「前往 XXX(不安全)」→「允許」
⚠️ 這不是你電腦有問題,是自己寫的程式沒被 Google 官方審核,正常的。
- 取得網址,開始使用
動作:授權完會出現網址,直接複製
位置:在部署成功畫面會有一行 `https://script.google.com/...`
結果:貼到瀏覽器就會打開我們的塑膠射出報價工具
⚠️ 如果你後來有改程式碼,記得要重新部署網址才會變!
⚠️ 關於紅色授權畫面的解釋
這個警告其實超多人看到會緊張,但你放心,這是 Google 用來提醒「這個 Apps Script 沒經過他們人工審核」而已。如果你確定程式碼是自己貼的,就可以大膽地點「進階」→「前往...」→「允許」。就像你自己家大門自己裝鑰匙,不用給社區保全審核一樣。
真的怕就多看一次自己貼的程式碼是不是你剛才複製的,沒問題就上吧!
兩個實戰例子:比價、控預算都超方便!
你可以這樣用:像是有個客戶丟三個尺寸的產品,直接填數字按下去,每個尺寸模費、單價一目了然,馬上列出合約預算要多少(我就是幫同業這樣算給客戶看)。
另外一個,老闆突然問「去年年底那批 2000PCS ABS 亮面件,我們當時怎麼報價?」你只要點一下「刷新紀錄」,全部歷史都列在表格裡,再也不用翻信箱或群組,真的是懶人救星。