google-apps-script - 如何使用 onEdit 功能观看多个标签
问题描述
我遇到了这个脚本,它根据特定列的值将行从一个选项卡移动到另一个选项卡。它运行良好,但这只能在单个选项卡上运行。此脚本是否可以在多个选项卡上运行并将记录仅移动到特定选项卡?
例如,这是要观看的选项卡列表:
- AAA
- BBB
- CCC
- DDD
- 电子电气设备
- ETC...
当 N 列(包含=IF formula
根据条件集确定值)中的值更改为Completed
时,脚本会自动将该行复制到DONE表中,然后删除该行。
我不确定是否onEdit()
会起作用。
注意:所有选项卡都是相同的。
这是我在论坛中找到的脚本:
function onEdit() {
var app = SpreadsheetApp;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetNameToWatch = ss.getSheetByName("Current")
var columnNumberToWatch = 8;
var valueToWatch = "DONE";
var sheetNameToMoveTheRowTo = "OLD";
//var ss = SpreadsheetApp.getActiveSpreadsheet();//this has already been declared
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == "Current" && range.getColumn() == 8 && range
.getValue() == "DONE") {
var targetSheet = ss.getSheetByName("OLD");
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(
targetRange);
sheet.deleteRow(range.getRow());
}
}
解决方案
我知道如果它们符合条件,您想从不同的工作表中移动一些行,并且每次修改电子表格时都需要它。如果我对您的问题的理解是正确的,那么您可以通过使用Range.getSheet()
. 此时,您已经有了一个带有工作表的变量,因此代码可以继续搜索关键字并在必要时Completed
将该行复制到DONE工作表。
推荐阅读
- azure - 如何获取 Azure 资源组中存在的磁盘快照列表的 VM 名称
- vue.js - 在 Vuetify 数据表中添加类?
- message - 如何在消息队列集成模式中构建数据完整性检查?
- unity3d - 如何为标签、图层游戏对象部分编写自定义检查器?
- python - Flask 中的本地客户端时间
- javascript - 让节点服务器监听连接是否危险?
- chef-infra - 神秘:厨师客户/刀:他们忽略了knife.rb和client.rb中的任何错误
- swift - 如何在 SwiftUI 中定位崩溃 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
- python - 根据许多条件创建列
- python - 如何根据音频进行直方图均衡?