Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.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
Javascript 有条件地将行复制到另一张图纸,并在更新行后将其删除_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 有条件地将行复制到另一张图纸,并在更新行后将其删除

Javascript 有条件地将行复制到另一张图纸,并在更新行后将其删除,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个电子表格,里面有一个检查表,要在活动开始前60天、30天和1天填写。这些工作表被称为“60天”、“30天”和“开始”。我正在尝试将未选中的行自动添加到下一个工作表中(因此,“60天”中的所有未选中行都将被添加到“30天”中,并从“30天”添加到“开始”-“已选中”意味着在单元格中输入“x”)。我在代码方面有了一个很好的开始,但我一定是做错了什么——因为它似乎没有任何作用(请原谅我对javascript的无知,我上周开始尝试使用codecademy进行编码,并且在这些论坛上浏览了很多次)。

我有一个电子表格,里面有一个检查表,要在活动开始前60天、30天和1天填写。这些工作表被称为“60天”、“30天”和“开始”。我正在尝试将未选中的行自动添加到下一个工作表中(因此,“60天”中的所有未选中行都将被添加到“30天”中,并从“30天”添加到“开始”-“已选中”意味着在单元格中输入“x”)。我在代码方面有了一个很好的开始,但我一定是做错了什么——因为它似乎没有任何作用(请原谅我对javascript的无知,我上周开始尝试使用codecademy进行编码,并且在这些论坛上浏览了很多次)。我觉得有一些非常基本的东西我可能会错过,并欢迎任何我能得到的帮助。这是我得到的

function onEdit() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getActiveCell();
var i = 4;//have this number be your first row of data

  if(r.getColumn()===5){ // this indicates the column that, if left blank, will mean the row should be copied to the next sheet

    if (ss.getActiveSheet().getName()=="60-Day"){

      var source_sheet = ss.getSheetByName("60-Day");
      var target_sheet = ss.getSheetByName("30-Day");
      var last_row = target_sheet.getLastRow();

      while(i<=last_row){

        if(source_sheet.getValue("E"+i)!="x"){

          var source_range = source_sheet.getRange(i,2,1,6); // indicate the columns you'd like to copy
          var target_range = target_sheet.getRange(last_row + 1,2,1,6); // indicate the columns where you'd like to paste
          source_range.copyTo(target_range);
          i++;
          SpreadsheetApp.flush();
        }else{
        i++;
        }
      }
};
    else if (ss.getActiveSheet().getName()=="30-Day"){
      var source_sheet = ss.getSheetByName("30-Day");
      var target_sheet = ss.getSheetByName("Kickoff");
      var last_row = target_sheet.getLastRow();

      while(i<=last_row){

        if(ss.getValue("E"+i)!="x"){

           var source_range = source_sheet.getRange(i,2,1,6);//indicate the columns you'd like to copy
          var target_range = target_sheet.getRange(last_row + 1,2,1,6);//indicate the columns where you'd like to paste
          source_range.copyTo(target_range);
          i++;
          SpreadsheetApp.flush();
        }else{
        i++;
        }
      };
    }
}
}
函数onEdit(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getActiveCell();
var i=4;//将此数字作为第一行数据
如果(r.getColumn()==5){//这表示如果留空,则表示该行应复制到下一页的列
如果(ss.getActiveSheet().getName()=“60天”){
var source_sheet=ss.getSheetByName(“60天”);
var target_sheet=ss.getSheetByName(“30天”);
var last_row=target_sheet.getLastRow();

虽然(我认为你会想要这方面的改变

function onEdit() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var r = ss.getActiveCell();
  var i = 4;//have this number be your first row of data

  if(r.getColumn()===5){ // this indicates the column that, if left blank, will mean the row should be copied to the next sheet

    if (ss.getActiveSheet().getName()=="60-Day"){

      var source_sheet = ss.getSheetByName("60-Day");
      var target_sheet = ss.getSheetByName("30-Day");
      var source_last_row = source_sheet.getLastRow();
      var target_last_row = target_sheet.getLastRow() + 1;  

      while(i<=source_last_row){

        if(source_sheet.getRange("E"+i).getValue() !="x"){

          var source_range = source_sheet.getRange(i,2,1,6); // indicate the columns you'd like to copy
          var target_range = target_sheet.getRange(target_last_row,2,1,6); // indicate the columns where you'd like to paste
          source_range.copyTo(target_range);
          //var new_last_row = target_last_row - 1;
          source_sheet.deleteRow(i);  // delete source row after copy
          i++;
          SpreadsheetApp.flush();
          target_sheet.getRange('E'+target_last_row).setValue('x');  // insert 'x' back into target
        }else{
          i++;
        }
      }
    }
    else if (ss.getActiveSheet().getName()=="30-Day"){
      var source_sheet = ss.getSheetByName("30-Day");
      var target_sheet = ss.getSheetByName("Kickoff");
      var source_last_row = source_sheet.getLastRow();
      var target_last_row = target_sheet.getLastRow() + 1;  

      while(i<=source_last_row){

        if(source_sheet.getRange("E"+i).getValue() !="x"){

          var source_range = source_sheet.getRange(i,2,1,6);//indicate the columns you'd like to copy
          var target_range = target_sheet.getRange(target_last_row,2,1,6);//indicate the columns where you'd like to paste
          source_range.copyTo(target_range);
          //var new_last_row = target_last_row - 1;

          source_sheet.deleteRow(i);  // delete source row after copy
          i++;
          SpreadsheetApp.flush();
          target_sheet.getRange('E'+target_last_row).setValue('x');  // insert 'x' back into target
        }else{
          i++;
        }
      }
    }
  }
}
函数onEdit(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getActiveCell();
var i=4;//将此数字作为第一行数据
如果(r.getColumn()==5){//这表示如果留空,则表示该行应复制到下一页的列
如果(ss.getActiveSheet().getName()=“60天”){
var source_sheet=ss.getSheetByName(“60天”);
var target_sheet=ss.getSheetByName(“30天”);
var source_last_row=source_sheet.getLastRow();
var target_last_row=target_sheet.getLastRow()+1;

虽然(iHey Bryan!谢谢你在这方面的帮助。出于某种原因,它似乎不起作用。不管怎样,我意识到我并没有很好地解释我自己。理想情况下,我希望该项目保留在原始工作表和复制到的工作表上,如果它在任何一个位置都被检查过,我希望更新原始内容,并将副本保存到dis出现。我还重新考虑了整个onEdit触发器。我现在要让脚本可以从菜单中由用户启动。如果您希望在所有工作表中删除它们,则必须在每一行中搜索与您要签出的行匹配的值。最后我编写了4个不同的函数(每个函数都可以从菜单中启动),一个将信息从60天移动到30天,一个将信息从30天移动到开始,一个重置30天,还有一个重置开始。我不得不求助于一些硬编码,脚本速度很慢,因为它贯穿每一行,但它工作得很好。这需要用户比我希望的更加警惕e、 但是可以。