我正在尝试创建一个简单的发货处理流,并希望使用onEdit复选框触发器在两个工作表(选项卡)之间移动行。
以下是我的项目链接:https://docs.google.com/spreadsheets/d/1SPO21kAyNX5fEqwkXVjmPASkfHvZ5Tzbq4s7e22VdYg/edit#gid=2005756436
基本概念是,由多个工件组成的装运将输入第一张表中,然后复制到WB\U日志表中。当计划将什么装载到卡车时,复选框用于将工件从WB\U日志表移动到load\U计划表,在该计划表中,其装载位置将在复选框右侧的一列中确定。如果一件或多件货物无法装入特定的卡车,我希望取消选中“装载计划”框,并将该行移回WB\U日志表。
这是我发现几乎可以工作的onEdit函数:
function onEdit(event) {
// assumes source data in sheet named WB_Log
// target sheet of move to named Load_Plan
// getColumn with check-boxes is currently set to column 14 or N
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "WB_Log" && r.getColumn() == 14 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Load_Plan");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
} else if(s.getName() == "Load_Plan" && r.getColumn() == 14 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("WB_Log");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
我的问题是,Load\u Plan在复选框的右侧有列,我不想将这些列移回WB\u日志。如何调整代码,以便在复选框未选中(False)时,仅将A:N列中的信息从Load\u Plan移回WB\u Log?
如果有人能提供任何建议或想法,我们将不胜感激。
targetSheet。getLastRow()1返回工作表按钮的下一行。我认为这就是你的问题所在。
- 我认为在您的情况下,当检索到“B4”的后一行的最后一行时,可以使用行号
当以上几点反映到脚本中时,它将变成如下所示。
请修改您的脚本如下。
} else if(s.getName() == "Load_Plan" && r.getColumn() == 14 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("WB_Log");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
} else if(s.getName() == "Load_Plan" && r.getColumn() == 14 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn() - 1; // Modified
var targetSheet = ss.getSheetByName("WB_Log");
var lastRow = targetSheet.getRange("B4").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); // Added
var target = targetSheet.getRange(lastRow + 1, 1); // Modified
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
- getNextDataCell(方向)
我是一名编码等方面的初学者,但我正在努力理解我在做什么以及代码中发生了什么。 我想在不同的电子表格之间划一行。 我在“核心”电子表格中有一个脚本,它在“主页”和“完成”表格链接之间移动一行到电子表格: 我搜索了如何将位于“已完成”工作表上的数据移动到另一个名为“数据库”的电子表格链接到电子表格: 但我想将数据从表“CORE”/“Finished”传输到表“database”/“DB”,而不重写DB
我有一些不同列的excel表格,如下所示: 表A:Col1 Col2 Col3 表B: Col2 Col4 Col5 表C: Col1 Col6 Col7 我的最终表格应该是: 最终表格:Col1 Col2 Col3 Col4 Col5 Col6 Col7 如果没有特定列的详细信息,则应保留为空。我一次只成功地合并了两个表,但我想将所有表合并在一起。 这是合并两张图纸的代码: 这是我编写的用于合并
THX!
下图应该有助于尽可能清楚地说明这一点。 我有三个窗格A、B和C。B和C是A的子窗格,B有自己的子窗格(白色框)。通过拖放,我可以将B的孩子移动到B中的任何位置,并能够再次拾取他们,但如果拖到C,甚至是A的一小部分,他们可以被丢弃,但不能再次拾取。 我使用基本控制。要拖动,我使用imgView.setOnMouseDragged。 那么,我如何才能从一个窗格A拖动到窗格B或C,并且仍然允许拾取和拖动
我用的是最新版本的MySQL Workbench 5.2.40。 在 EER 图中,有没有办法在表之间复制/粘贴列,以及使用拖放将列从一个表移动到另一个表? 我现在看不到任何这样的功能。如果是这种情况,考虑到稍后修改或更正设计会很繁琐,使用Workbench进行初步设计将很困难。我不妨直接使用PhpMyAdmin进行物理设计,因为我可以在更改表时复制SQL语句的粘贴部分。 有什么变通的修改工作台中
我有三个工作表,我想根据特定条件在它们之间传输数据行。根据文本字符串从sheet1到sheet2,以及根据今天的日期与输入日期之间的差异从sheet2到sheet3。然而,到目前为止,我的尝试都是徒劳的。 我想根据列“P”读取为“Completed”还是“抛出”,将数据从sheet1移动到sheet2。我还想在“O”列中记录更改为上述任一选项的日期。 对于第二种情况,我想根据列“O”中列出的日期是