google-sheets-api - 如何在 Google 表格脚本中添加其他源表格和目标表格?
问题描述
我设置了一个 Google 工作表来检查指定列中源工作表上的单元格是否接收到值,并且当接收到值时,将该行复制到目标工作表并从源工作表中删除该行。
如果源表没有改变,下面的代码似乎可以工作:
function onEdit(event) {
var editedCell;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Job Schedule" && r.getColumn() == 50 && r.getValue() == "X") { //the number (50=AX) must match the distance for the 'SHIPPING/SHIP' column
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Job History");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns);
var source = s.getRange(row, 1, 1, numColumns);
var notes = source.getNotes();
source.copyTo((target), {contentsOnly:true});
target.setNotes(notes);
s.deleteRow(row);
}
if(r.getValue() == "H") { //the number (50=AX) must match the distance for the 'SHIPPING/SHIP' column
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Job Holding");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns);
var source = s.getRange(row, 1, 1, numColumns);
var notes = source.getNotes();
source.copyTo((target), {contentsOnly:true});
target.setNotes(notes);
s.deleteRow(row);
} }
...但是当我尝试反转源表和目标表时,什么也没有发生。我在这里做错了什么?
function onEdit(event) {
var editedCell;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Job Schedule" && r.getColumn() == 50 && r.getValue() == "X") {
//the number (50=AX) must match the distance for the 'SHIPPING/SHIP' column
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Job History");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns);
var source = s.getRange(row, 1, 1, numColumns);
var notes = source.getNotes();
source.copyTo((target), {contentsOnly:true});
target.setNotes(notes);
s.deleteRow(row);
}
if(r.getValue() == "H") { //the number (50=AX) must match the distance for the 'SHIPPING/SHIP' column
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Job Holding");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns);
var source = s.getRange(row, 1, 1, numColumns);
var notes = source.getNotes();
source.copyTo((target), {contentsOnly:true});
target.setNotes(notes);
s.deleteRow(row);
}
if(s.getName() == "Job History" && r.getColumn() == 50 && r.getValue() == "R") { //the number (50=AX) must match the distance for the 'SHIPPING/SHIP' column
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Job Schedule");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns);
var source = s.getRange(row, 1, 1, numColumns);
var notes = source.getNotes();
source.copyTo((target), {contentsOnly:true});
target.setNotes(notes);
s.deleteRow(row);
}
if(s.getName() == "Job Holding" && r.getColumn() == 50 && r.getValue() == "R") { //the number (50=AX) must match the distance for the 'SHIPPING/SHIP' column
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Job Schedule");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, 1, numColumns);
var source = s.getRange(row, 1, 1, numColumns);
var notes = source.getNotes();
source.copyTo((target), {contentsOnly:true});
target.setNotes(notes);
s.deleteRow(row);
}
}
这是日志所说的:
2018-05-29 10:09:30.409 EDT 目标范围的坐标超出了工作表的尺寸。在 onEdit(代码:63) 展开全部 | 折叠所有 { insertId: "qxgz0dg15to7zh" jsonPayload: {
context: { reportLocation: {…} } 消息:"目标范围的坐标超出工作表的尺寸。在 onEdit(Code:63)" serviceContext: { service: "AKfycbxhBfEl0hoqtNu87yC2n5H8MpwYDUhojBjI_G9okmTG" } } labels: { script.googleapis.com/process_id: "EAEA1GOzXOP8tCPAT0uKRL24EjcxsGpBqJFr9-Tq8Z1rNGrlkYLWlWf7JzvIN1u0tLRPxGjJHjquTAEXXw4hn7vCf2T_UloDjcJQFHKHeKh58fJEXGg7gqfHut_j-zFd__MdCWgLRWiiOlNvTEI-f5CYhVstuN4NyZC-ulQ" script.googleapis.com/project_key: "M-4Ir7ZfvYpEjdXYSVA5_ukuLxhikTIQl"
script.googleapis.com/user_key: "APHrgwr1ptfqh8OKASadCsz3luoVac92py5po4eQivhAsyqN3K0IxIAKMJNxdckvOON6dS9sjCXj" } logName: "projects/project-id-6367347185723609045/logs/script.googleapis.com%2Fconsole_logs" receiveTimestamp: "2018-05-29T14:09:31.411762110Z" resource: {
标签:{function_name:“onEdit”invocation_type:“自定义函数”project_id:“project-id-6367347185723609045”}类型:“app_script_function”}严重性:“ERROR”时间戳:“2018-05-29T14:09:30.409Z”}
解决方案
推荐阅读
- flutter - Image.asset() 与 ImageAsset?
- java - Azure Blob 存储:CloudBlockBlob.downloadToByteArray(byte[] buffer, int bufferOffset) 如何设置缓冲区大小
- java - 使用PDFBox从pdf中提取时如何知道图像是旋转还是倒置
- google-apps-script - 与 Rhino 运行时相比,在 V8 下授权后 Appscript 不执行
- firebase - firebase 云消息传递中的 firebase 部署错误
- javascript - 打字稿错误?`get` 语法和 `defineProperty` 的 `get` 之间的 `this` 区别
- go - 我可以取消分配 Golang 中切片元素占用的空间吗?
- leaflet - Mapbox Outdoors - Mapbox Studio 旧风格的背景和标签
- perl - 子叉进程返回值
- python - Python OpenCV 通过读取图像上的二维码来调整图像大小