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

如何在Google Sheets中根据单元格值变更实现行的删除与迁移?

解决任务自动转移的方案

实现逻辑

通过Google Apps Script的onEdit触发事件,专门监听Tasks标签页的状态列变化,一旦状态改为「已完成」,就按两个表的列对应关系提取数据,转移到Completed Tasks表后删除原行。

具体代码步骤

  1. 打开你的表格,点击顶部菜单「扩展程序」→「Apps脚本」
  2. 清空默认的代码,粘贴下面的脚本:
function onEdit(e) {
  const spreadsheet = e.source;
  const tasksSheet = spreadsheet.getActiveSheet();
  const completedSheet = spreadsheet.getSheetByName("Completed Tasks");

  // 只处理Tasks表的状态列修改(假设状态在第4列,自己根据实际列数调整)
  if (tasksSheet.getName() !== "Tasks" || e.range.getColumn() !== 4) return;

  const taskStatus = e.value;
  if (taskStatus !== "已完成") return;

  const targetRow = e.range.getRow();
  // 这里要根据你两个表的列对应关系改!比如Tasks表A列是优先级,B列是任务名,Completed表要把任务名放A,优先级放B
  const taskPriority = tasksSheet.getRange(targetRow, 1).getValue();
  const taskTitle = tasksSheet.getRange(targetRow, 2).getValue();
  const finishTime = new Date();

  // 把数据追加到Completed Tasks表的最后一行
  completedSheet.appendRow([taskTitle, taskPriority, finishTime]);

  // 删除Tasks表中已完成的这一行
  tasksSheet.deleteRow(targetRow);
}

关键调整点

  • 列位置匹配:你必须根据自己两个表的实际列布局,修改脚本里getRange(targetRow, X)中的X值,确保提取的数据对应到Completed Tasks表的正确列
  • 测试验证:先手动复制一行测试任务,把状态改成「已完成」,确认数据能正确转移再正式用
  • 权限授权:首次运行脚本会弹出权限请求,按步骤允许即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:01:11