Google sheets 在活动工作表上运行OneEdit

Google sheets 在活动工作表上运行OneEdit,google-sheets,spreadsheet,Google Sheets,Spreadsheet,我一直在寻找这个问题的答案,但我对最基本的脚本都非常生疏,所以我无法理解我发现了什么 我有一个用于工作列表的电子表格,它分为三个选项卡:样本/图像/存档 用户访问电子表格以收集要工作的项目-一旦完成,他们会将A列标记为“完成”,我有ScampMichael提供的代码,可以在完成后自动将行移动到“存档”表: function onEdit(event) { // assumes source data in sheet named Samples // target sheet of move t

我一直在寻找这个问题的答案,但我对最基本的脚本都非常生疏,所以我无法理解我发现了什么

我有一个用于工作列表的电子表格,它分为三个选项卡:样本/图像/存档

用户访问电子表格以收集要工作的项目-一旦完成,他们会将A列标记为“完成”,我有ScampMichael提供的代码,可以在完成后自动将行移动到“存档”表:

function onEdit(event) {
// assumes source data in sheet named Samples
// target sheet of move to named Archive
// test column with Completed is col 1 or A
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

if(s.getName() == "Samples" && r.getColumn() == 1 && r.getValue() == "Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
 }
}
我的挑战是,我不能让这段代码同时用于“示例”和“图像”选项卡。我推测这是因为每个电子表格不能有多个onEdit函数,但到目前为止,我扩展代码以查看两个选项卡的努力都失败了


非常感谢您提供的任何帮助

现在还不清楚你想做什么,但我试过了。我假设该图像与示例中已完成的行位于相同的行号上,并且在将图像复制到存档时,我将其附加到存档中创建的行的末尾。我对你的代码做了一些更改。它们是值得注意的。如果你需要,我可以分享我的测试电子表格

function onEdit(event) {
// assumes source data in sheet named Samples
// target sheet of move to named Archive
// test column with Completed is col 1 or A
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Samples" && r.getColumn() == 1 && r.getValue() == 
"Complete") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);//changed to delete the row
 image(row,numColumns)//call function to process Images send row and last column
}}
function image(row,numColumns){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s1=ss.getSheetByName("Images")//get Images sheet
  var lc=s1.getLastColumn()
  var data=s1.getRange(row, 1, 1,lc)//get row
  var targetSheet = ss.getSheetByName("Archive");
  var target = targetSheet.getRange(targetSheet.getLastRow() , numColumns+1,1,1);//add image one column after Samples data on same row.
  s1.getRange(row, 1, 1, lc).moveTo(target);
  s1.deleteRow(row)//delete the copied image row.
}

您可以创建另一个处理图像工作表的函数,并从OneEdit函数调用它。现在还不清楚你需要对图片表做什么。我为这一混乱道歉-我需要对图片表做完全相同的事情。我曾尝试在同一个脚本和单独的文件中复制此代码,但我无法使该函数在两个工作表上都工作。