簡體   English   中英

如何根據第1列中的值從表x復制(然后刪除)一行到表y?

[英]How to copy (and then delete) a row from sheet x to sheet y based on value in column 1?

我正在Google表格中工作並嘗試設置一個Apps腳本宏

  1. 在工作表“Sheet1”中查找“A”列中值為“True”的行
  2. 復制此行並將其粘貼到工作表“Sheet2”中最后一行填充行下方的行中
  3. 刪除“Sheet1”中的行

我一直在嘗試論壇上另一篇文章的代碼,但我一直得到:TypeError:無法從undefined中讀取屬性“length”。 (第20行,文件“代碼”)

任何幫助將非常感激

function copyrange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet1"); //source sheet
  var testrange = sheet.getRange("A2:AE990");
  var testvalue = (testrange.getValues());
  var csh = ss.getSheetByName("Sheet2"); //destination sheet
  var data = [];
  var j =[];

  //Condition check in G:G; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
  if ( testvalue[i] == "TRUE") {
  data.push.apply(data,sheet.getRange(i+1,1,1,11).getValues());
  //Copy matched ROW numbers to j
  j.push(i);
 }
 }
//Copy data array to destination sheet

 csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);

//Delete matched rows in source sheet
  for (i=0;i<j.length;i++){
  var k = j[i]+1;
  sheet.deleteRow(k);

//Alter j to account for deleted rows
  if (!(i == j.length-1)) {
  j[i+1] = j[i+1]-i-1;
}
}
}

嘗試這個:

function moveRows() {
  var ss=SpreadsheetApp.getActive();
  var ssh=ss.getSheetByName('Sheet1');
  var dsh=ss.getSheetByName('Sheet2');
  var srg=ssh.getDataRange();//You might want to specify a more unique range. This just gets all of the data on the sheet
  var svA=srg.getValues();
  var d=0;//deleted row counter
  //I  assume one row for a header
  for(var i=1;i<svA.length;i++) {
    if(svA[i][0].toString().toLowerCase()=='true') {
      dsh.appendRow(svA[i]);//append entire row to Sheet2
      ssh.deleteRow(i-d+1);//accounts for the difference between length of array and number of remaining row.
      d++;
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM