我正在尝试创建一个Google脚本,该脚本基于单元格的值将行从一个Google表格复制到另一个表格中。
我希望脚本运行,并在“ H”列中检查单词“ done”,如果找到,则将该数据行复制到另一张表的下一个空行中。
我尝试了不同的方法,但是仍然缺少一些东西。它总是指向“ else”,所以我猜测问题出在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
}
}
我希望只复制值“ done”的行。我想念什么?
答案 0 :(得分:0)
尝试一下:
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);
}