懶人包神器:一鍵比較雷射切割與傳統板金工法!
你是不是也曾經被客戶問「到底要選雷射切割還是傳統板金加工?」講到後面都在繞圈圈,還要查一堆資料,腦袋瞬間打結!我之前幫工廠做專案時,真的是客製詢價表填到手軟,每次都怕遺漏細節。這次我直接做了一個超直覺的 Google Sheet 小工具,幫你快速記錄案子需求、比較兩種加工方式差異,還自動估算預計工時和建議方案。板金報價流程瞬間順一百倍!
複製這段程式碼,板金製程選擇超輕鬆!
這個工具會讓你輸入板金件資訊、需求數量、急件狀況,還能記錄在 Sheet,馬上顯示傳統與雷射的處理分析和建議,直接少掉超多重複溝通。
// === 板金加工懶人比較機 ===
function doGet(e) {
var html = [];
html.push('<div style="max-width:540px; margin:40px auto;'
+ 'background:#f8f9fa;padding:30px 32px;border-radius:8px;'
+ 'box-shadow:0 4px 14px #ddd;">');
html.push('<h2 style="color:#0056b3;">板金加工選擇小幫手</h2>');
// 輸入表單
html.push('<form id="bmForm">');
html.push('<label>零件名稱:</label><br>');
html.push('<input name="part_name" required style="width:95%;"><br>');
html.push('<label>材質(SUS/AL/其他):</label><br>');
html.push('<input name="material" required style="width:95%;"><br>');
html.push('<label>板厚(mm):</label><br>');
html.push('<input name="thickness" type="number" step="0.1" min="0.1" '
+ 'required style="width:60px;"><br>');
html.push('<label>數量:</label><br>');
html.push('<input name="qty" type="number" min="1" required style="width:80px;"><br>');
html.push('<label>是否急件:</label>');
html.push('<select name="urgent"><option>否</option><option>是</option></select>');
html.push('<br><br>');
html.push('<button type="submit" style="padding:6px 24px;'
+ 'background:#0275d8;color:white;border:none;border-radius:4px;">'
+ '送出比較</button>');
html.push('</form>');
html.push('<div id="result" style="margin-top:20px;"></div>');
html.push('<hr>');
html.push('<h4>近期查詢紀錄 <button onclick="google.script.run.withSuccessHandler(showHistory).getHistory();"'
+ 'style="margin-left:8px;padding:2px 12px;">重新整理</button></h4>');
html.push('<div id="history">載入中...</div>');
html.push('</div>');
// 簡易 JS
html.push('<script>'
+ 'document.getElementById("bmForm").onsubmit=function(ev){'
+ 'ev.preventDefault();'
+ 'var d=new FormData(this);'
+ 'var obj={}; d.forEach((v,k)=>obj[k]=v);'
+ 'document.getElementById("result").innerHTML="比較中...";'
+ 'google.script.run.withSuccessHandler(function(res){'
+ 'document.getElementById("result").innerHTML=res;'
+ 'google.script.run.withSuccessHandler(showHistory).getHistory();'
+ '}).processSheetMetal(obj);'
+ '};'
+ 'function showHistory(html){'
+ 'document.getElementById("history").innerHTML=html;'
+ '}'
+ 'google.script.run.withSuccessHandler(showHistory).getHistory();'
+ '</script>');
return HtmlService.createHtmlOutput(html.join(""));
}
function processSheetMetal(data) {
var part = data.part_name || '';
var material = data.material || '';
var t = parseFloat(data.thickness || 0);
var qty = parseInt(data.qty || 1,10);
var urgent = (data.urgent||'')==='是';
// 假設數值(參考社群討論、實際案例)
var laser_limit = 10; // 超厚傳統佔優
var laser_speed = 1.2; // 1.2 倍傳統速度
var trad_speed = 1.0;
var laser_cost = 18 + t*1.5; // per 件
var trad_cost = 15 + t*2.5; // per 件
if(t>laser_limit){
laser_speed=0.8; // 這厚度雷射反而慢
laser_cost += 20;
}
if(urgent){
laser_cost+=10; trad_cost+=8;
}
var time_trad = (trad_speed*qty).toFixed(1);
var time_laser = (laser_speed*qty*0.75).toFixed(1);
var amt_trad = (trad_cost*qty).toFixed(0);
var amt_laser = (laser_cost*qty).toFixed(0);
var rec = '';
if(t>8 || material.toUpperCase().indexOf('SUS')>-1){
rec = '建議優先評估傳統加工(厚板/不鏽鋼傳統常見)';
}else if(urgent){
rec = '急單可優先考慮雷射,速度快省模具';
}else if(qty<10){
rec = '小量客製雷射很方便,不用開模';
}else{
rec = '大量/規格穩定可考慮傳統,單價較低';
}
// 寫進 Sheet
var sh = SpreadsheetApp.getActive().getSheetByName("板金查詢紀錄");
if(!sh){
sh = SpreadsheetApp.getActive().insertSheet("板金查詢紀錄");
sh.appendRow(['時間','零件','材質','板厚','數量','急件?',
'傳統時長','雷射時長','傳統金額','雷射金額','建議']);
}
sh.appendRow([new Date(), part, material, t, qty, urgent?'是':'否',
time_trad, time_laser, amt_trad, amt_laser, rec]);
// 結果輸出
var res = '<div style="padding:8px 15px; background:#e9f6ef;'
+ 'border-radius:4px;">'
+ '<b>傳統加工</b>:預估'+time_trad+'小時,總金額 $'+amt_trad+'<br>'
+ '<b>雷射切割</b>:預估'+time_laser+'小時,總金額 $'+amt_laser+'<br>'
+ '<span style="color:#007800;">'+rec+'</span>'
+ '</div>';
return res;
}
function getHistory() {
var sh = SpreadsheetApp.getActive().getSheetByName("板金查詢紀錄");
if(!sh){
return '<em>目前尚無紀錄。</em>';
}
var vals = sh.getRange(2,1,Math.min(7,sh.getLastRow()-1),11).getValues();
var html = [];
html.push('<table border="0" style="width:99%;font-size:90%;">'
+ '<tr style="background:#dedede;">'
+ '<th>時間</th><th>零件</th><th>材質</th><th>厚</th>'
+ '<th>數量</th><th>急</th><th>傳統時</th><th>雷射時</th>'
+ '<th>傳統$</th><th>雷射$</th><th>建議</th></tr>');
for(var i=0;i<vals.length;i++){
html.push('<tr style="background:'+(i%2?'#f6f6f6':'')+';">');
for(var j=0;j<vals[i].length;j++){
html.push('<td>'+vals[i][j]+'</td>');
}
html.push('</tr>');
}
html.push('</table>');
return html.join('');
}
// END
六步驟搞定:讓你快速用上板金製程比較工具
真的不難,用過一次你就會上手!
- 開啟 Apps Script 編輯器
先打開你要用的 Google 試算表,點上方選單「擴充功能」→「Apps Script」(位置大概在正中央上方)
點下去會跳新分頁,看到一大片白底寫著 function myFunction()。
⚠️ 有朋友說公司帳號會擋這個,如果打不開,八成是權限問題。
- 貼上程式碼
編輯器中央白色區塊,全選(Ctrl+A),先整個砍掉,再貼上上面的程式碼(Ctrl+V)。
原本的 function myFunction() 就會不見!
⚠️ 別留舊東西,容易衝突。我之前就沒全部清掉,Debug 半天。
- 儲存專案
點左上角那個藍色磁碟片,或直接 Ctrl+S,沒取過名會跳視窗讓你隨便填。
存完後才能順利部署!
⚠️ 我有次太急直接跑部署,結果出錯,記得一定要存~
- 部署為網頁應用程式
右上角有個藍色「部署」,點下去選「新增部署作業」。
這時會跳出部署設定的小視窗,按照這四步走:
1. 點左下角齒輪,選「網頁應用程式」
2. 執行身份請選「我本人」(你的帳號)
3. 「誰可以存取」這邊一定要點「任何人」
4. 最後按「部署」
⚠️ 我聽前輩說過,沒選「任何人」的話外部打不開,一直顯示授權錯誤!
- 處理授權警告
第一次用會看到紅通通的「Google 尚未驗證這個應用程式」。
直接點「進階」,再點「前往 XXX(不安全)」,按下「允許」。
系統才會讓你存資料到 Sheet。
⚠️ 真的不是中毒,我自己寫每次都跳警告,正常啦!
- 複製網址開始用
授權過後,畫面會顯示一串網址,就是你的工具門牌號碼。
複製起來,丟進瀏覽器就能開啟囉。
⚠️ 小提醒:如果有改過程式碼,一定要重新部署,不然新功能看不到。
⚠️ 關於那個「Google 尚未驗證這個應用程式」紅色警告
這真的每個新寫 Apps Script 的人都會遇到,不用怕!因為這只是 Google 預設幫你提醒「這個網頁還沒經過他們審查」。只要是你自己寫的(沒公開給世界用),你點「進階」→「前往 XXX(不安全)」就可以正常繼續。你的資料只會寫到你自己的 Sheet,不會外流。我每次測試小工具都這樣,沒出過問題。
現場實戰:這工具怎麼派上用場?
上次我朋友臨時要幫客戶比一個 SUS 板件的報價,量又很小。他直接用這工具輸入型號、厚度、數量,一秒就知道雷射切割比較划算還是要跑傳統製程。還有廠務那邊,有急單來的時候,直接點「急件」,馬上知道建議方案和預估工時,回報不會再漏細節。每次資料都自動記在 Sheet,老闆要查紀錄也很方便,真的很實用!