專業級廚房龍頭選型與空間誤踩預警管理器
廚房裝修時,光是龍頭位置、樣式、槽深、牆面預留尺寸就能搞到半夜,少個 1 公分,裝修師傅直接搖頭。有次我幫朋友審核圖面,他家的龍頭一裝就頂到窗台,水花四濺,真的傻眼。新手設計圖面時,尺寸表填錯,事後很難補救。少個簡單的「預先檢查工具」,誤踩只會一再重演。這工具,就是為了不讓你重蹈覆轍。
一鍵複製專業配套自動檢查工具
這個工具能記錄每個案場的龍頭/水槽/牆面關鍵數據,即時判斷設計誤區、產生專屬清單,並可回顧歷史案件對照修正。
// === 廚房龍頭空間誤踩預警管理器 ===
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-family:monospace;padding:20px;}');
html.push('label{display:inline-block;width:120px;}');
html.push('input,select{margin-bottom:10px;}');
html.push('table{border-collapse:collapse;margin-top:20px;}');
html.push('th,td{border:1px solid #bbb;padding:5px 10px;}');
html.push('.err{color:#c00;margin-top:12px;}</style>');
html.push('</head><body>');
html.push('<h2>廚房龍頭空間誤踩預警管理器</h2>');
// 錯誤提示
if (e.parameter.err) {
html.push('<div class="err">'+e.parameter.err+'</div>');
}
// 表單區
html.push('<form method="get">');
html.push('<label>案場名稱:</label>');
html.push('<input name="proj" required><br>');
html.push('<label>龍頭款式:</label>');
html.push('<select name="type">'
+ '<option>下拉式</option>'
+ '<option>單槍</option>'
+ '<option>雙槍</option>'
+ '<option>L 型</option>'
+ '<option>抽拉式</option>'
+ '</select><br>');
html.push('<label>水槽深度(cm):</label>');
html.push('<input name="sink" type="number" min="30" max="70" required><br>');
html.push('<label>檯面至窗台高(cm):</label>');
html.push('<input name="wallgap" type="number" min="0" max="50" required><br>');
html.push('<label>龍頭高(cm):</label>');
html.push('<input name="tap_h" type="number" min="10" max="60" required><br>');
html.push('<input type="submit" value="送出檢查">');
html.push('<input type="hidden" name="save" value="1">');
html.push('</form>');
// 處理檢查與寫入
var showResult = false, checkRes = {}, row=[];
if (e.parameter.save) {
var proj = (e.parameter.proj || '').trim();
var type = e.parameter.type || '';
var sink = Number(e.parameter.sink||0);
var wallgap = Number(e.parameter.wallgap||0);
var tap_h = Number(e.parameter.tap_h||0);
// 基本欄位驗證
if (!proj || !type || !sink || !tap_h) {
return HtmlService.createHtmlOutputFromFile('')
.setContent('<script>location.replace("?err=欄位不能空白")</script>');
}
// 檢查邏輯(這邊小心設計)
checkRes = checkLayout(sink, wallgap, tap_h, type);
row = [new Date(), proj, type, sink, wallgap, tap_h, checkRes.msg];
saveToSheet(row);
showResult = true;
html.push('<h3>本次檢查結果</h3>');
html.push('<div style="background:'
+ (checkRes.level=="ok"?"#e6ffe6":"#fff5d1")
+ ';padding:12px;border-radius:6px;">'
+ checkRes.msg + '</div>');
}
// 歷史紀錄區
html.push('<h3>歷史案件紀錄</h3>');
html.push(buildTable());
html.push('<form method="get">'
+ '<input type="submit" value="手動刷新紀錄"></form>');
html.push('</body></html>');
return HtmlService.createHtmlOutput(html.join('\n'));
}
// 配套邏輯檢查
function checkLayout(sink, wallgap, tap_h, type) {
// 常見誤踩
if (tap_h + wallgap > 45) {
return {msg:"⚠️ 龍頭加牆縫過高,裝完可能卡窗!",level:"warn"};
}
if (sink < 35) {
return {msg:"⚠️ 水槽太淺,水花易濺出。建議至少 38cm",level:"warn"};
}
if (type=="抽拉式" && wallgap<8) {
return {msg:"⚠️ 抽拉龍頭需要至少 8cm 牆縫!",level:"warn"};
}
// 正常
return {msg:"✓ 配套尺寸沒大問題。",level:"ok"};
}
// 寫入 Google Sheet
function saveToSheet(row) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('案件紀錄');
if (!sheet) {
sheet = ss.insertSheet('案件紀錄');
sheet.appendRow(['時間','案場','龍頭','水槽深度','牆縫高','龍頭高','檢查結果']);
}
sheet.appendRow(row);
}
// 讀取 Sheet 產生表格
function buildTable() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('案件紀錄');
if (!sheet) return '<div>尚無資料</div>';
var data = sheet.getDataRange().getValues();
if (data.length<2) return '<div>尚無資料</div>';
var html = ['<table><tr>'];
data[0].forEach(function(h){html.push('<th>'+h+'</th>');});
html.push('</tr>');
// 只顯示近 10 筆,避免一堆太亂
for (var i=Math.max(1,data.length-10);i<data.length;i++) {
html.push('<tr>');
data[i].forEach(function(x){html.push('<td>'+x+'</td>');});
html.push('</tr>');
}
html.push('</table>');
return html.join('');
}
零經驗也能標準部署的完整教學
跟著流程來,保證不再擔心「為什麼我的表單跑不起來」。
- 開啟 Apps Script 編輯器
動作:在 Google 試算表畫面,點「擴充功能」→「Apps Script」
位置:「擴充功能」在上方選單,中間偏右。
結果:新分頁會進入 Apps Script 編輯器,白底畫面。
⚠️ 第一次用公司帳號常被擋,我遇過學校 Google 帳號直接封鎖 Apps Script,建議先用個人帳。
- 清空並貼上程式碼
動作:點編輯器中央區塊,全選(Ctrl+A),刪除,再把上面程式碼貼進來。
位置:最大那塊白色區域。
結果:原本的 myFunction 被整個換掉。
⚠️ 有人只貼進去沒刪乾淨,常常卡一堆語法錯誤,一定要確認全刪了再貼。
- 儲存專案
動作:點左上角磁碟片圖示,或直接 Ctrl+S。
位置:編輯器工具列左邊第一個。
結果:第一次會跳出視窗,自己輸入個名字(隨意)。
⚠️ 沒存檔直接部署會爆紅字,有次我幫朋友 remote debug 就是這種低級錯。
- 部署為網頁應用程式
動作:右上角點「部署」→「新增部署作業」。
位置:「部署」藍色按鈕,在右上。
結果:彈出設定視窗。
子步驟:
1. 點齒輪,選「網頁應用程式」
2. 執行身分選「我」
3. 誰可以存取,一定選「任何人」
4. 最後按「部署」
⚠️ 「誰可以存取」只要沒選「任何人」別人一定開不了,我自己就被朋友臭過一次。
- 處理授權警告
動作:按指示授權,會跳紅色警告。
結果:看到「Google 尚未驗證這個應用程式」。
處理:點「進階」→「前往 XXX(不安全)」→「允許」。
⚠️ 我遇過有家長看到這畫面直接關掉,覺得是詐騙,這完全正常,只要是自己寫的 Apps Script 都會這樣,不用怕。
- 取得網址,開始使用
動作:授權完成後,複製出現的網址(https://script.google.com/...)。
位置:部署完成畫面。
結果:網址貼進瀏覽器就能看到工具。
⚠️ 每次修改程式碼要重新部署,不然別人看到還是舊的,我之前踩過這個坑,一直以為壞掉。
⚠️ 關於紅色授權畫面的解釋
只要是自己寫的 Apps Script,Google 都會跳「尚未驗證」紅色警告,這完全正常。原因是 Google 沒法一一審核所有私人專案,怕你誤用惡意程式。只要你確定程式是自己寫、沒亂用別人來路不明的碼,這畫面可以直接按「進階」繼續。用我自己的話說:我自己家裝修都給朋友這樣授權,十幾個案場沒出過事。只要不傳給陌生人,安全沒問題。
專業現場常見使用場景
現場設計師要交圖時,先輸入水槽深度、龍頭高度、窗台間隙,馬上幫你檢查有沒有雷區,直接顯示「龍頭裝上去會卡窗」或「水槽太淺」這種現場最常被罵的問題。案場多時,主管還能調出每一案記錄,檢討設計習慣,哪個同仁最常出錯一目了然。不用再靠記憶,也不會事後扯皮,工具直接幫你留紀錄,避免下次重蹈覆轍。