Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 根据复选框移动行的谷歌脚本-谷歌工作表_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 根据复选框移动行的谷歌脚本-谷歌工作表

Google apps script 根据复选框移动行的谷歌脚本-谷歌工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个脚本,当单元格复选框(列AE)为true时,它会将一行从一个选项卡“通信”移动到另一个选项卡“存档”,但它只适用于行AE2,当我选中AE3或AE6时,它不起作用 function onEdit() { var sheetNameToWatch = "COMMUNICATIONS"; var sheetNameToMoveTheRowTo = "ARCHIVE"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var s

我有一个脚本,当单元格复选框(列AE)为true时,它会将一行从一个选项卡“通信”移动到另一个选项卡“存档”,但它只适用于行AE2,当我选中AE3或AE6时,它不起作用

function onEdit() {

  var sheetNameToWatch = "COMMUNICATIONS";
  var sheetNameToMoveTheRowTo = "ARCHIVE";

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveCell();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName(sheetNameToWatch);
  var sheet2 = ss.getSheetByName(sheetNameToMoveTheRowTo);


  var cell1 = sheet1.getRange("AE2:AE1000");

  var x= cell1.getValue();

  Logger.log("a",x);


  if(cell1.getValue()== false) {

  Logger.log("box not checked");

    sheet1.showSheet();


  } else if (cell1.getValue() == true) {

    var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);

    var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);

    sheet.getRange(range.getRow(), 1, 1, 
    sheet.getLastColumn()).moveTo(targetRange);

    sheet.deleteRow(range.getRow());

  }
}

你可以试试这个代码。我在我的一张床单上测试了一下,效果很好

   function onEdit(event) {
  // assumes source data in sheet named Active
  // target sheet of move to named Found 
  // test column with yes/no is col 13 or M
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "COMMUNICATIONS" && r.getColumn() == 13 && r.getValue() == true) {
    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);
  }

}

谢谢你的帮助。它正在工作,但现在它正在移动两排。例如,我检查了AE3,它正在移动AE3和AE4。再次感谢您的帮助。我在每一行中加入颜色,看看这是否只是我的感知,但我可以看到两行不同颜色同时移动。如果你能帮助我,我真的很感激!很高兴它成功了:)