iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0

今天我們來讓我們的單據管理系統更上一層樓!
我們今天要新增一項功能:當單據編號相同時,回傳已經有單據編號的訊息

程式碼解析

  // ---------- 檢查單據編號是否已存在 ----------
  var lastRow = sheet.getLastRow();
  var billNos = [];

  if (lastRow > 1) {  // 表示至少有一筆資料(第2列開始)
    billNos = sheet.getRange(2, 1, lastRow - 1, 1).getValues().flat();
  }

  var inputBillNo = billNo.trim().toLowerCase();
  billNos = billNos.map(n => String(n).trim().toLowerCase());

  if (billNos.includes(inputBillNo)) {
    return "錯誤:此單據編號已存在,請使用不同的編號。";
  }

getLastRow:取得工作表中最後一列有資料的行數。
var billNos = [];:先宣告一個空陣列,準備存放現有的單據編號。
如果 lastRow > 1,表示除了標題列(第1列)之外,至少有一筆資料。
sheet.getRange(2, 1, lastRow - 1, 1):
從第2列(2)開始
第1欄(1)
共 lastRow - 1 列
取 1 欄
也就是抓取所有現有單據的編號。
getValues() 取得的是一個二維陣列,例如 [[bill1], [bill2]]
flat() 把二維陣列轉成一維陣列 [bill1, bill2],方便後續使用 includes() 判斷。
billNo.trim().toLowerCase():
trim() 去掉使用者輸入前後的空白
toLowerCase() 轉成小寫
這樣可以避免使用者輸入 "AB123" 與 " ab123 " 被誤判為不同單據編號。
billNos.map(n => String(n).trim().toLowerCase()):
把所有已存在的單據編號也統一處理(去空白、小寫、字串化),方便比較。
判斷使用者輸入的單據編號是否已經存在於現有的單據編號中。
如果存在,直接返回錯誤訊息,避免重複新增。


上一篇
D12 單據控管系統
下一篇
D14單據管理系統實作
系列文
Google App Script雲端自動化與動態網頁實戰23
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言