Google Sheet库存管理:如何通过SKU自动删除/转移行?
Google Sheet 实现SKU自动删除/转移行的方案
方法一:用Google Apps Script 手动输入SKU自动处理
1. 编写核心脚本
打开你的Google Sheet,点击顶部菜单栏的「扩展」→「Apps 脚本」,在脚本编辑器里替换默认代码为以下内容:
// 根据SKU删除对应行 function deleteRowBySKU(sku) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = sheet.getDataRange().getValues(); // 假设SKU在A列,不在的话改索引(数组从0开始,B列是1,以此类推) for (let i = data.length - 1; i >= 0; i--) { if (data[i][0] === sku) { sheet.deleteRow(i + 1); // 表格行号从1开始,所以要+1 SpreadsheetApp.getUi().alert(`SKU ${sku} 对应的行已删除`); return; } } SpreadsheetApp.getUi().alert(`没找到SKU ${sku} 的记录`); } // 根据SKU把行转移到指定工作表 function moveRowBySKU(sku, targetSheetName) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = ss.getActiveSheet(); const targetSheet = ss.getSheetByName(targetSheetName); if (!targetSheet) { SpreadsheetApp.getUi().alert(`目标工作表 ${targetSheetName} 不存在`); return; } const data = sourceSheet.getDataRange().getValues(); for (let i = data.length - 1; i >= 0; i--) { if (data[i][0] === sku) { targetSheet.appendRow(data[i]); sourceSheet.deleteRow(i + 1); SpreadsheetApp.getUi().alert(`SKU ${sku} 的行已转移到 ${targetSheetName}`); return; } } SpreadsheetApp.getUi().alert(`没找到SKU ${sku} 的记录`); } // 生成自定义菜单,方便操作 function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('库存操作') .addItem('输入SKU删除行', 'showDeleteDialog') .addItem('输入SKU转移行', 'showMoveDialog') .addToUi(); } // 弹出输入SKU的删除对话框 function showDeleteDialog() { const ui = SpreadsheetApp.getUi(); const response = ui.prompt('请输入要删除的SKU:', ui.ButtonSet.OK_CANCEL); if (response.getSelectedButton() === ui.Button.OK) { const sku = response.getResponseText().trim(); if (sku) { deleteRowBySKU(sku); } else { ui.alert('SKU不能为空'); } } } // 弹出输入SKU的转移对话框 function showMoveDialog() { const ui = SpreadsheetApp.getUi(); const skuResponse = ui.prompt('请输入要转移的SKU:', ui.ButtonSet.OK_CANCEL); if (skuResponse.getSelectedButton() === ui.Button.OK) { const sku = skuResponse.getResponseText().trim(); if (!sku) { ui.alert('SKU不能为空'); return; } const sheetResponse = ui.prompt('请输入目标工作表名称:', ui.ButtonSet.OK_CANCEL); if (sheetResponse.getSelectedButton() === ui.Button.OK) { const targetSheetName = sheetResponse.getResponseText().trim(); if (targetSheetName) { moveRowBySKU(sku, targetSheetName); } else { ui.alert('目标工作表名称不能为空'); } } } }
2. 使用说明
- 如果你的SKU不在A列,修改代码里
data[i][0]的数字就行(比如B列改成data[i][1])。 - 保存脚本后刷新表格,顶部会多出「库存操作」菜单,点进去选删除或转移,输入SKU就能自动处理。
方法二:结合扫码枪实现自动处理
扫码枪其实就是快速把SKU文本输入到单元格,基于这个特性可以实现全自动操作:
- 在表格里选一个单元格(比如C1)当SKU输入位。
- 给脚本加个单元格监听函数,输入SKU后自动触发转移/删除:
// 监听指定单元格,自动处理SKU function onEdit(e) { const watchCell = 'C1'; // 要监听的单元格位置 const targetSheetName = '已售出商品'; // 转移的目标表名,自己改 if (e.range.getA1Notation() === watchCell) { const sku = e.value.trim(); if (sku) { // 这里可以换deleteRowBySKU改成删除操作 moveRowBySKU(sku, targetSheetName); // 清空输入单元格,方便下一次扫描 e.range.clearContent(); } } }
- 保存脚本后,用扫码枪扫SKU到C1单元格,脚本会自动把对应行转移到目标表,同时清空C1,直接扫下一个就行。
注意事项
- 第一次运行脚本需要授权,跟着提示走就行,授权是安全的,只有你能访问自己的表格。
- 建议给SKU列设置唯一性验证,避免同一个SKU有多条数据,导致误删/转移多行。
内容的提问来源于stack exchange,提问作者Andrew Pokrandt
相关产品推荐
相关产品推荐

