Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
If statement 使用宏将某些行复制到重复的工作表_If Statement_Google Apps Script_Google Sheets_Logic - Fatal编程技术网

If statement 使用宏将某些行复制到重复的工作表

If statement 使用宏将某些行复制到重复的工作表,if-statement,google-apps-script,google-sheets,logic,If Statement,Google Apps Script,Google Sheets,Logic,我有一张谷歌表格,我用它作为每月交接单,底部有一张待办事项清单 待办事项列表有一个复选框,然后是几列信息(日期、任务以及任务分配给谁) 我创建了一个按钮,它运行宏来复制工作表,以便在月底创建一个复制的工作表 我想复制一下待办事项列表中所有未被“勾选”为已完成的任务,但我不太擅长谷歌应用程序脚本中的逻辑 有人能帮我写if语句,将未勾选的行复制到复制的工作表中,或者复制所有行,然后删除勾选的行 谢谢,乔 更新:在玩了几个小时后,我得到了: function ToDoCopy() { va

我有一张谷歌表格,我用它作为每月交接单,底部有一张待办事项清单

待办事项列表有一个复选框,然后是几列信息(日期、任务以及任务分配给谁)

我创建了一个按钮,它运行宏来复制工作表,以便在月底创建一个复制的工作表

我想复制一下待办事项列表中所有未被“勾选”为已完成的任务,但我不太擅长谷歌应用程序脚本中的逻辑

有人能帮我写if语句,将未勾选的行复制到复制的工作表中,或者复制所有行,然后删除勾选的行

谢谢,乔

更新:在玩了几个小时后,我得到了:

function ToDoCopy() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  var duplicateSheet = ss.getSheetByName("JUNE");
  var originalSheet = ss.getSheetByName("MAY");
  
  var lastRow = originalSheet.getLastRow() + 1;
  
  for(var j = 24; j <  lastRow; j++)
  {
    if(originalSheet.getRange(j,2).getValue() ==false && originalSheet.getRange(j,3).getValue() != 4)
    {
      var nextRow = duplicateSheet.getLastRow() +1;
      var getCopyRange = originalSheet.getRange('B' + j + ':P' + j);
      getCopyRange.copyTo(duplicateSheet.getRange(nextRow, 2));
    }
  }
}
函数ToDoCopy(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var duplicateSheet=ss.getSheetByName(“六月”);
var originalSheet=ss.getSheetByName(“MAY”);
var lastRow=originalSheet.getLastRow()+1;
对于(var j=24;j
它几乎可以工作,但它将复制的项目添加到新工作表的待办事项表下方,而不是添加到顶部。我想不出怎么解决这个问题


(p.s.
&&originalSheet.getRange(j,3.getValue)()=4 < <代码>部分是用于自动排序表的隐藏行,“4”意味着它基本上是空的。

您是否使用调试器?这有助于快速诊断软件问题。还可以考虑添加临时诊断输出语句来帮助修改代码。例如,您可以添加一张“六月”和“5”两张表吗??似乎您有很多隐藏行和潜在的隐藏功能,这些功能在为此编写解决方案时可能是相关的。
function ToDoCopy() {
  const ss = SpreadsheetApp.getActive();
  const ssh = ss.getSheetByName("MAY");//source sheet
  const sshsr = 24;//start row
  const srg = ssh.getRange(sshsr, 1, ssh.getLastRow() - sshsr + 1, ssh.getLastColumn());
  const svs = srg.getDisplayValues();//useful for me when using checkboxes
  const dsh = ss.getSheetByName("JUNE");//destination sheet
  if (dsh.getLastRow() - sshsr + 1 > 0) {
    dsh.getRange(sshsr, 1, dsh.getLastRow() - sshsr + 1, dsh.getLastColumn()).clearContent().setDataValidation(null);//Clear destination range if not already cleared
  }
  let a = 0;//row add counter
  svs.forEach((r, i) => {
    if (r[1] == 'FALSE' && r[2] != 4) {
      ssh.getRange(sshsr + i, 1, 1, ssh.getLastColumn()).copyTo(dsh.getRange(sshsr + a++, 1));
    }
  });
}