根据行中单元格中的值将特定行复制到新的 Google 表格 (JavaScript)



我正在尝试创建一个Google脚本,该脚本根据单元格的值将行从一个Google工作表复制到另一个Google工作表中。

我希望脚本运行并检查"H"列中的单词"done",如果找到,则将该行数据复制到另一张工作表的下一个空行中。

我尝试了不同的方法,但仍然缺少一些东西。它总是去"其他",所以我的猜测是问题出在var data = range.getValues();

function transfer1() {
    var ss = SpreadsheetApp.getActive();
    var sheet1test = ss.getSheetByName("Sheet1test");
    var dbtest = ss.getSheetByName("dbtest2");

    var dataRange = sheet1test.getDataRange();
    var range = sheet1test.getRange("A2:H" + dataRange.getLastRow());
    var data = range.getValues();
    if ( data == "done" ) { //it seems that "done" is never found in any cell??
        dbtest.getRange(dbtest.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
    } else {
        do nothing
    }
}

我希望只复制值为"完成"的行。我错过了什么?

试试这个:

function yourfunction() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName("Sheet1");
  var sh2=ss.getSheetByName("Sheet2");
  var rg1=sh1.getRange(1,2,sh1.getLastRow(),7);//starting at column2
  var data=rg1.getValues();
  for(var i=0;i<data.length;i++) {
    if(data[i][6]=="done") {
      sh2.appendRow(data[i]);
    }
  }
}

或者这适用于:

function yourfunction() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName("Sheet1");
  var sh2=ss.getSheetByName("Sheet2");
  var rg1=sh1.getRange(1,2,sh1.getLastRow(),sh1.getLastColumn()-1);//starting at column2
  var data=rg1.getValues();
  for(var i=1;i<data.length;i++) {
    if(data[i][6]=="done") {
      sh1.getRange(i+1,2,1,sh1.getLastColumn()-1).copyTo(sh2.getRange(sh2.getLastRow()+1,1,1,sh1.getLastColumn()-1));
    }
  }
}

甚至这个:

function yourfunction() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName("Sheet1");
  var sh2=ss.getSheetByName("Sheet2");
  var rg1=sh1.getRange(1,2,sh1.getLastRow(),sh1.getLastColumn()-1);//starting at column2
  var data=rg1.getValues();
  for(var i=0;i<data.length;i++) {
    if(data[i][6]!="done") {
      data.splice(i,1);
    }
  }
  sh2.getRange(sh2.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}

其实这个挺有趣的:

function yourfunction() {
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName("Sheet1");
  var sh2=ss.getSheetByName("Sheet2");
  var rg1=sh1.getDataRange();
  var data=rg1.getValues();
  data.map(function(r){return r.splice(0,1);});
  for(var i=0;i<data.length;i++) {
    if(data[i][6]!="done") {
      data.splice(i,1);
    }
  }
  sh2.getRange(sh2.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}

最新更新