带有 Apps 脚本的表格上的复制和删除功能

Copy & Delete Function on Sheets w/ Apps Script

有人提交 Google 表单回复后,他们的回复会转到 DropRequests sheet(尽管由于某些原因当前未链接表单)。

我们想要做的是在有人提交他们的表单并且他们的回复进入 DropRequests sheet 之后,如果 C 列中的值与 StudentMatches sheet 中 F 列中的值相匹配, 它被移动到 OldMatches sheet。我们已经开始使用下面的代码,但它还不能工作。关于如何实现此功能并解决最后一行范围问题的任何想法?

function moveMatch(){
var oldmatches = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("OldMatches");
var droprequest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DropRequests");
var currentmatches = SpreadsheetApp.openById('1dd9UhD2LpshCFVYizpf3OwI1XzPrq3AfqhMAO1iJ6Ns')

  value1 =  currentmatches.getRange("F:F").getDisplayValues();
  value2 = droprequest.getRange("C:C").getDisplayValues();

for(var i in value1)
  if(value2[0,i]=value1){
  
  currentmatches.getDataRange.getRow(0,i).moveTo(oldmatches.getLastRow())
}
}

再次感谢。

我相信你的目标如下。

  • 您的 Spreadsheet.
  • 中有 3 sheet 个 DropRequestsStudentMatchesOldMatches
  • 您想从 DropRequests sheet 中检索“C”列的值,并想将这些值与 StudentMatches [=] 的“F”列的值进行比较61=]s.
  • 当值匹配时,您想将行从 StudentMatches sheet 移动到 OldMatches sheet.[=48= 的第一个空行]
  • 当使用moveTo时,移动的行变为空行。在你的目标中,你想要这种情况。

在这种情况下,下面的示例脚本怎么样?

示例脚本:

function moveMatch() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet1 = ss.getSheetByName("DropRequests");
  var srcSheet2 = ss.getSheetByName("StudentMatches");
  var dstSheet = ss.getSheetByName("OldMatches");

  var srcValues1 = srcSheet1.getRange("C2:C" + srcSheet1.getLastRow()).getValues().map(([c]) => c);
  var [,...srcValues2] = srcSheet2.getDataRange().getValues();
  var values = srcValues2.flatMap((r, i) => srcValues1.includes(r[5]) ? i + 2 : []);
  if (values.length == 0) return;
  var lastCol = srcSheet2.getLastColumn();
  var lastRow = dstSheet.getLastRow();
  values.forEach((r, i) => srcSheet2.getRange(r, 1, 1, lastCol).moveTo(dstSheet.getRange(lastRow + 1 + i, 1)));
}
  • 在此修改中,值是从“DropRequests”和“StudentMatches”的列“C”中检索的。并且,将“DropRequests”的“C”列的值与“StudentMatches”的“F”列的值进行比较sheet。当值匹配时,该行将从“StudentMatches”移动到“OldMatches”。

注:

  • 首先,请再次检查 sheet 个名称。

  • 此示例脚本用于回答您的问题。因此,当 Spreadsheet 更改时,此脚本可能无法使用。请注意这一点。

参考文献: