google-apps-script - 为什么我的代码不能将数据从一个工作表移动到另一个工作?
问题描述
我有一个包含两个工作表的工作簿:
“大师”和“提交”
当“主”表上“P”列中的单词从“待定”更改为“已提交”时,我希望将该行从主表中删除并添加到已提交表的最后一行。
我可以毫无错误地保存脚本,但是当我将单元格从“PENDING”更改为“SUBMITTED”时,什么也没有发生......
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var r = SpreadsheetApp.getActiveSpreadsheet().getActiveRange();
if(s.getName() == "MASTER" && r.getColumn() == 17 && r.getValue() == "SUBMITTED") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("SUBMITTED");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
解决方案
试试这种方式:
function onEdit(e) {
const s=e.range.getSheet();
if(s.getName()=="MASTER" && e.range.columnStart==16 && e.value=="SUBMITTED") {
const ts=e.source.getSheetByName('SUBMITTED');
s.getRange(e.range.rowStart,1,1,s.getLastColumn()).moveTo(ts.getRange(ts.getLastRow()+1,1));
s.deleteRow(e.range.rowStart);
}
}
推荐阅读
- python - *args in recursion: TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
- java - 传递默认值时,@Value 注释不会从应用程序属性中读取任何值
- animation - 如何使 Jetpack Compose Image 动画无限
- kotlin - 在集合中查找元素并将其连同其索引一起返回
- mysql - 禁用mysql查询无法禁用外键约束
- wordpress - WP - add_filter() 没有从古腾堡块回调传递值
- python - 如何匹配两个数据框列并在 Python 中的单独列上返回匹配值?
- flutter - 如何在颤振 modal_bottom_sheet 中添加嵌套滚动?
- java - Cordova:当应用程序关闭时,从 JAVA 调用 JS 方法
- java - 图形 2D 不在 Java 中绘制图像