这是我的第二个问题,因为第一个问题由 patt0 解决,谢谢!
我有一个编辑工作脚本,每次编辑工作表时都会检查,如果列号的任何单元格的值。7 更改为“RECEBER”,它将整行拉到另一张纸上。起初,我认为这对我有用,但很快发现 onEdit 有一些与我想做的不兼容的限制。
因为我不能依赖 onEdit,所以我想随时从创建的菜单(如 patt0 所建议的)运行脚本。这可以一次完成,对整个电子表格,也可以逐张完成(我相信两者的解决方案都是相似的,两种方式对我来说都非常方便)。
这是我拥有的代码(不工作 - 改编自之前的编辑代码):
第一部分存储工作表名称以检查它是否在 1 到 31 之间;
function mustBeCopied(sheetName) {
var sheetNumber = parseInt(sheetName);
if (sheetNumber <=31 && sheetNumber >=1)
return true;
return false;
}
这第二部分可能是一些问题,因为它来自 onEdit 功能。
function RECEBER() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // stores the active spreadsheet (where the script is being ran)
var s = ss.getActiveSheet(); // stores the Active sheet within the stored spreadsheet
var r = ss.getActiveRange(); // stores the range of rows in my document ?
if(mustBeCopied(s.getName()) && r.getColumn() == 7 && r.getValue() == "RECEBER") { // if mustBeCopied, when applied to the sheet defined in the s variable is satisfied, it will check on every row if the value "RECEBER" is in its 7th column.
var row = r.getRow(); // stores the row that satisfied the condition
var numColumns = s.getLastColumn(); // stores the last column on the sheet ?
var targetSheet = s.getSheetByName("money"); // sets the target sheet
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); // gets range on the target sheet and adds one more row for the new data to be inserted
s.getRange(row, 1, 1, numColumns).copyTo(target); // writes the data into the target sheet, but I don't understand how..
}
}
我正在逐步分析,看看我是否理解正在发生的事情。
我确信这可以很容易地完成,并且愿意学习,但我似乎无法在网上找到解决方案。我认为这已经是一个讨论的主题。如果我可以自动执行此操作,每个月都会为我节省很多时间。它还将降低人为错误的风险,因为它将由计算机处理。
我希望有人可以帮助我.. 谢谢。