通过 importrange 导入数据时,将数据行存档到另一个选项卡(Google 张)

Archive data row to another tab while data is imported through importrange (Google Sheets)

我的脚本将“2019-2020”中的一行归档到 "Fully Invoiced" 选项卡。但是,该行不会从“2019-2020”选项卡中消失。我认为这是因为数据是通过 importrange 函数从另一个电子表格导入的。我希望这一行消失。

function onEdit(event) {
  // target sheet of move to named Paid
  // getColumn with check-boxes is currently set to column 2 or B
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  // Message box when archiving a project
  var editedCell = event.range.getSheet().getActiveCell();
    if((s.getName() == "2019-2020")&& r.getColumn() == 2 && r.getValue() == true) {   
    var response = Browser.msgBox('Make sure the project has been fully invoiced before archiving it. Are you sure to continue?', Browser.Buttons.YES_NO);
      Logger.log(response);
  if (response == "yes") {
    Logger.log('The user clicked "Yes."');
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Fully Invoiced");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  } else {
    Logger.log('The user clicked "No" or the dialog\'s close button.');
  }
  }

  // Unarchive a project from Fully Invoiced tab to 2019-2020 tab
  else if(s.getName() == "Fully Invoiced" && r.getColumn() == 2 && r.getValue() == false) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("2019-2020");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);   
}
} 

有人知道吗?

然后您需要从源文件中删除条目。 IMPORTRANGE() 将始终拉入您在仅查看模式下请求的范围,即您不能更改值。如果您想更改/删除值,则需要在源文件中执行此操作。

  • 源文件=包含原始数据的文件
  • 工作文件 = 使用 IMPORTRANGE 从源文件获取数据的文件