You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文本输入到单元格,基于这个特性可以实现全自动操作:

  1. 在表格里选一个单元格(比如C1)当SKU输入位。
  2. 给脚本加个单元格监听函数,输入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();
    }
  }
}
  1. 保存脚本后,用扫码枪扫SKU到C1单元格,脚本会自动把对应行转移到目标表,同时清空C1,直接扫下一个就行。

注意事项

  • 第一次运行脚本需要授权,跟着提示走就行,授权是安全的,只有你能访问自己的表格。
  • 建议给SKU列设置唯一性验证,避免同一个SKU有多条数据,导致误删/转移多行。

内容的提问来源于stack exchange,提问作者Andrew Pokrandt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:32:28