Google apps script 将行范围转移到另一个选项卡,然后在不删除公式的情况下清除选项卡

Google apps script 将行范围转移到另一个选项卡,然后在不删除公式的情况下清除选项卡,google-apps-script,google-sheets,range,transfer,Google Apps Script,Google Sheets,Range,Transfer,在Google Sheets中,当G16设置为“完成”时,我试图将A3:G13范围(如果有文本;有时不使用整个范围)从装箱单选项卡转移到已完成事务选项卡,然后在不删除公式的情况下清除A3:G13。我见过许多单独传输行的脚本,但我需要它们全部传输G15的OneEdit 谢谢你的帮助 代码: 您可以执行以下操作: 使用从源范围中检索值,使用筛选出列A为空的行,并使用设置筛选值 使用检索源范围的公式,并在清除内容后将其再次设置为 使用清除源范围的内容 代码段: 您可以执行以下操作: 使用从源范

在Google Sheets中,当G16设置为“完成”时,我试图将A3:G13范围(如果有文本;有时不使用整个范围)从装箱单选项卡转移到已完成事务选项卡,然后在不删除公式的情况下清除A3:G13。我见过许多单独传输行的脚本,但我需要它们全部传输G15的OneEdit

谢谢你的帮助

代码:
您可以执行以下操作:

  • 使用从源范围中检索值,使用筛选出列A为空的行,并使用设置筛选值
  • 使用检索源范围的公式,并在清除内容后将其再次设置为
  • 使用清除源范围的内容
代码段:
您可以执行以下操作:

  • 使用从源范围中检索值,使用筛选出列A为空的行,并使用设置筛选值
  • 使用检索源范围的公式,并在清除内容后将其再次设置为
  • 使用清除源范围的内容
代码段:
您共享的电子表格不是公共的,您可以将其公开吗?还有,你能展示一下你到现在为止都做了些什么吗?你有你正在使用的代码吗?您面临的具体问题是什么?抱歉,更新的链接现在是公开的。您有正在处理的代码吗?当复制到目标工作表时,是否要保留范围格式和公式?我尝试将部分代码拼凑在一起,但没有任何效果,因此我将其全部删除。我不太擅长使用脚本,所以我试着从这个示例代码开始,分别将行带到另一个工作表,但我需要将它分组在一起,并且只有在G16设置为完成时。我不需要将公式复制到目标工作表,只需要values.function onEdit(event){var ss=SpreadsheetApp.getActiveSpreadsheet();var s=event.source.getActiveSheet();var r=event.source.getActiveRange();if(s.getName()=“装箱单”&&r.getColumn()==7&&r.getValue()=“完成”){var range=r.getRange(A3:G13);var numColumns=s.getlastcolumns();var targetSheet=ss.getSheetByName(“已完成的事务”);var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);s.getRange(行,1,1,numColumns).moveTo(目标);s.deleteRow(行);您共享的电子表格不是公开的,您可以公开吗?另外,您可以展示您到目前为止尝试过的内容吗?您有正在使用的代码吗?您面临的具体问题是什么?抱歉,更新的链接现在是公开的。您有正在使用的代码吗?复制到目标工作表时是否保留范围格式和公式?I尝试将部分代码拼凑在一起,但没有任何效果,因此我将其全部删除。我不太擅长使用脚本,因此尝试从这个示例代码开始,该示例代码将行单独带到另一个工作表,但我需要将其分组在一起,并且仅当G16设置为完成时。我不需要将公式复制到目标工作表,只有values.function onEdit(event){var ss=SpreadsheetApp.getActiveSpreadsheet();var s=event.source.getActiveSheet();var r=event.source.getActiveRange();if(s.getName()=“装箱单”&&r.getColumn()=“7&&r.getValue()=“完成”){var range=r.getRange(A3:G13);var numColumns=s.getlastcumn();var targetSheet=ss.getSheetByName(“已完成的事务”);var target=targetSheet.getRange(targetSheet.getLastRow()+1,1);s.getRange(row,1,1,numColumns).moveTo(target);s.deleteRow(row);谢谢!非常感谢您的帮助谢谢!非常感谢!非常感谢您的帮助
function onEdit(event) { 
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var s = event.source.getActiveSheet(); 
  var r = event.source.getActiveRange(); 
  if(s.getName() == "Packing List" && r.getColumn() == 7 && r.getValue() == "Complete") { 
    var range = r.getRange(A3:G13); 
    var numColumns = s.getLastColumn(); 
    var targetSheet = ss.getSheetByName("Completed Transactions"); 
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); 
    s.getRange(row, 1, 1, numColumns).moveTo(target); 
    s.deleteRow(row);
function onEdit(e) {
  const rangeNotation = e.range.getA1Notation();
  const editedSheet = e.range.getSheet();
  if (editedSheet.getName() === "Packing List" && rangeNotation === "G15" && e.value === "Complete") {
    const sourceRange = editedSheet.getRange("A3:G13");
    const sourceFormulas = sourceRange.getFormulas();
    const sourceData = sourceRange.getValues().filter(row => row[0] != "");
    const targetSheet = e.source.getSheetByName("Completed Transactions");
    const targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, sourceData.length, sourceData[0].length);
    targetRange.setValues(sourceData);
    sourceRange.clearContent();
    sourceRange.setFormulas(sourceFormulas);
  }
}