Google apps script 类似的OnEdit和OnEdit2脚本不能一起工作
我在GoogleSheets中使用GoogleScripts函数,根据某些条件将行从一张工作表复制到另一张工作表。本质上,我希望将“请求”移动到存档或确认池中。从确认池中,我希望在完成后将它们移动到归档中 我尝试了几种方法来移动代码,包括将代码分离成不同的脚本,并将其保存在同一个脚本中。部分代码同时工作——例如,我通常可以将请求移动到确认池或归档中。起初,我认为问题在于我在不同的表单中使用了相同的列。我改变了,但没有修正密码。然后,我发现多个“onEdit”脚本不能在同一个工作表中运行,所以我将其中一个脚本的名称更改为onEdit2,然后更改为“myBookingRequests”。这种更改也不起作用 当我尝试将任何内容从确认池移动到归档文件中时,代码往往会中断,因此我认为现在的问题是,我正在将行移动到工作表中,并从工作表中获取行。任何关于如何解决此问题或从代码中删除冲突的帮助都会有所帮助。多谢各位 两个脚本分开:Google apps script 类似的OnEdit和OnEdit2脚本不能一起工作,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在GoogleSheets中使用GoogleScripts函数,根据某些条件将行从一张工作表复制到另一张工作表。本质上,我希望将“请求”移动到存档或确认池中。从确认池中,我希望在完成后将它们移动到归档中 我尝试了几种方法来移动代码,包括将代码分离成不同的脚本,并将其保存在同一个脚本中。部分代码同时工作——例如,我通常可以将请求移动到确认池或归档中。起初,我认为问题在于我在不同的表单中使用了相同的列。我改变了,但没有修正密码。然后,我发现多个“onEdit”脚本不能在同一个工作表中运行,所以我将
此代码是单个OneEdit(e) 该代码按照OP的建议工作,包括许多
Logger
语句,使OP能够在各个阶段对值进行故障排除,并确定任何错误的原因
将执行记录包含在问题中,可通过转到
查看>执行记录
找到。在这里,您可以看到脚本正在执行的操作以及可能丢失的任何错误消息。创建一个脚本,并将其配置为可安装的触发器。请澄清,同时运行两个版本的onEdit会带来麻烦。一个更好的解决方案是以某种方式组合它们,并创建一个可安装的onEdit触发器。结合你的代码好;以简单的onEdit(事件)触发器的形式运行代码。您注意到执行记录中没有错误,所以我认为代码中没有问题。我想知道你是否在做一些你在问题中没有描述的事情。例如,您说过,当我试图将任何内容从已确认的池移动到存档中时,代码往往会中断,这是什么意思;你所说的“休息”是什么意思;你所说的“移动”是什么意思。顺便说一句,请分享你的电子表格(或者至少是它的非机密版本)。@Tedinoz知道代码对其他人正常运行会有所帮助。我所说的“中断”,是指它在以前正常工作的地方停止工作。我所说的“移动”是指copyTo函数和deleteRow函数,它们本质上是将一行移动到另一个工作表。我意识到,如果我删除了“确认”表并再次添加它,代码将暂时再次工作。我将试着把它完全放在另一个工作表中,看看是否有一些小故障。如果这不起作用,我将在我的个人帐户上创建一个电子表格版本并与他人共享。非常感谢。
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Booking Requests" && r.getColumn() == 12 && r.getValue() == "Y") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Confirmed Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row); }
if(s.getName() == "Booking Requests" && r.getColumn() == 13 && r.getValue() == "Y") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archived Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row); }
}
function onEdit2(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Confirmed Bookings" && r.getColumn() == 14 && r.getValue() == "Y") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archived Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row); }
if(s.getName() == "Confirmed Bookings" && r.getColumn() == 15 && r.getValue() == "Y") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archived Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row); }
[19-07-03 14:20:54:610 CDT] Starting execution
[19-07-03 14:20:54:617 CDT] SpreadsheetApp.getActiveSpreadsheet() [0 seconds]
[19-07-03 14:20:54:618 CDT] SpreadsheetApp.getActive() [0 seconds]
[19-07-03 14:20:54:619 CDT] Spreadsheet.getActiveSheet() [0 seconds]
[19-07-03 14:20:54:620 CDT] SpreadsheetApp.getActive() [0 seconds]
[19-07-03 14:20:54:620 CDT] Spreadsheet.getActiveRange() [0 seconds]
[19-07-03 14:20:54:693 CDT] Sheet.getName() [0.072 seconds]
[19-07-03 14:20:54:694 CDT] Range.getColumn() [0 seconds]
[19-07-03 14:20:54:788 CDT] Range.getValue() [0.093 seconds]
[19-07-03 14:20:54:788 CDT] Range.getRow() [0 seconds]
[19-07-03 14:20:54:875 CDT] Sheet.getLastColumn() [0.086 seconds]
[19-07-03 14:20:54:876 CDT] Spreadsheet.getSheetByName([Confirmed Requests]) [0.001 seconds]
[19-07-03 14:20:54:975 CDT] Sheet.getLastRow() [0.098 seconds]
[19-07-03 14:20:54:976 CDT] Sheet.getRange([995, 1]) [0 seconds]
[19-07-03 14:20:54:977 CDT] Sheet.getRange([4, 1, 1, 12]) [0 seconds]
[19-07-03 14:20:54:977 CDT] Range.copyTo([Range]) [0 seconds]
[19-07-03 14:20:55:084 CDT] Sheet.deleteRow([4]) [0.106 seconds]
[19-07-03 14:20:55:094 CDT] Execution failed: The coordinates of the target range are outside the dimensions of the sheet. (line 12, file "Code") [0.47 seconds total runtime]
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
var eVal = event.value;
var eSheet = event.source.getActiveSheet().getName();
var ecolumnStart = event.range.columnStart;
var erowStart = event.range.rowStart;
var erowEnd = event.range.rowEnd;
var ecolumnEnd = event.range.columnEnd;
Logger.log("DEBUG: the spreadsheet is "+event.source.getName()+", the sheet = "+eSheet);
Logger.log("DEBUG: Range details - Column Start:"+ecolumnStart+", Column End:"+ecolumnEnd+", Row start:"+erowStart+", and Row End:"+erowEnd);
Logger.log("DEBUG: The Range = "+event.range.getA1Notation()+", and the value = "+eVal);
//Logger.log(JSON.stringify(event))
// STEP#1
// Sheet=Booking Requests
// AND
// column = L (12)
// AND
// value = "Y"
if(s.getName() == "Booking Requests" && r.getColumn() == 12 && r.getValue() == "Y") {
Logger.log("DEBUG: step 1 - if worked");
var row = r.getRow();
var numColumns = s.getLastColumn();
Logger.log("DEBUG: row = "+row+", number of columns = "+numColumns);
var targetSheet = ss.getSheetByName("Confirmed Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
Logger.log("DEBUG: target range = "+target.getA1Notation());
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row);
}
else{
Logger.log("DEBUG: step 1 - if failed");
}
// STEP#2
// Sheet=Booking Requests
// AND
// Column = 13 (M)
// AND
// VALUE = "Y"
if(s.getName() == "Booking Requests" && r.getColumn() == 13 && r.getValue() == "Y") {
Logger.log("DEBUG: step 2 - if worked");
var row = r.getRow();
var numColumns = s.getLastColumn();
Logger.log("DEBUG: row = "+row+", number of columns = "+numColumns);
var targetSheet = ss.getSheetByName("Archived Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
Logger.log("DEBUG: target range = "+target.getA1Notation());
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row);
}
else
{
Logger.log("DEBUG: step 2 - if failed");
}
// STEP#3
// Sheet=Confirmed Bookings
// AND
// column = N (14)
// AND
// value = "Y"
if(s.getName() == "Confirmed Bookings" && r.getColumn() == 14 && r.getValue() == "Y") {
Logger.log("DEBUG: step 3 - if worked");
var row = r.getRow();
var numColumns = s.getLastColumn();
Logger.log("DEBUG: row = "+row+", number of columns = "+numColumns);
var targetSheet = ss.getSheetByName("Archived Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row);
}
else
{
Logger.log("DEBUG: step 3 - if failed");
}
// STEP#4
// Sheet=Confirmed Bookings
// AND
// column = O (15)
// AND
// value = "Y"
if(s.getName() == "Confirmed Bookings" && r.getColumn() == 15 && r.getValue() == "Y") {
Logger.log("DEBUG: step 4 - if worked");
var row = r.getRow();
var numColumns = s.getLastColumn();
Logger.log("DEBUG: row = "+row+", number of columns = "+numColumns);
var targetSheet = ss.getSheetByName("Archived Bookings");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row);
}
else
{
Logger.log("DEBUG: step 4 - if failed");
}
}