Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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,我有一份包含两张工作表的工作簿: “主控”和“已提交” 当“主”工作表上“p”列中的单词从“待定”更改为“已提交”时,我希望将该行从主工作表中删除,并添加到已提交工作表的最后一行 我可以保存脚本,没有错误,但当我将单元格从“挂起”更改为“已提交”时,什么都不会发生 function onEdit(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = SpreadsheetApp.getActiveSpreadsh

我有一份包含两张工作表的工作簿:

“主控”和“已提交”

当“主”工作表上“p”列中的单词从“待定”更改为“已提交”时,我希望将该行从主工作表中删除,并添加到已提交工作表的最后一行

我可以保存脚本,没有错误,但当我将单元格从“挂起”更改为“已提交”时,什么都不会发生

function onEdit(event) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var r = SpreadsheetApp.getActiveSpreadsheet().getActiveRange();

  if(s.getName() == "MASTER" && r.getColumn() == 17 && r.getValue() == "SUBMITTED") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("SUBMITTED");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}
鉴于:

  • 选项卡的名称为:主选项卡和已提交选项卡
  • P列中的单元格需要编辑为值:SUBMITTED
  • P列为16而不是17
这将有助于:

function onEdit(e) {

  const row = e.range.getRow();
  const col = e.range.getColumn();
  const s = e.source.getSheetByName("MASTER")
  const as = e.source.getActiveSheet();
  const targetSheet = e.source.getSheetByName("SUBMITTED");

  if(as.getName() == "MASTER" && col == 16 && as.getRange(row,col).getValue() == "SUBMITTED") {  
        targetSheet.appendRow(s.getRange(row, 1, 1, s.getLastColumn()).getValues().flat([1]));     
        s.deleteRow(row);
  }
}
试着这样做:

function onEdit(e) {
  const s=e.range.getSheet();
  if(s.getName()=="MASTER" && e.range.columnStart==16 && e.value=="SUBMITTED") {
    const ts=e.source.getSheetByName('SUBMITTED');
    s.getRange(e.range.rowStart,1,1,s.getLastColumn()).moveTo(ts.getRange(ts.getLastRow()+1,1));
    s.deleteRow(e.range.rowStart);
  }
}

您说过您有两个工作表:“MASTER”和“Submitted”,但在代码中您使用了“Submitted”。您确定这不是某种语法错误吗?工具>执行中有错误日志吗?P列是16而不是17