我有一张包含许多列的工作表。我尝试在Google Apps脚本中创建一个功能,将所有行复制到另一张工作正常的工作表。
我想添加一个复制行的条件,即如果列'V'等于'YES'则会复制该行。
这是我到目前为止所拥有的。我刚刚开始玩Google Apps脚本,我没有任何其他编程语言经验。我在这里得到的是我在本网站上发现的内容,我尝试根据反复试验进行更改,所以请耐心等待:)
function prepareExport() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Get year & month
var now= new Date();
var year = now.getYear();
var thismonth = ("0" + (now.getMonth() + 1)).slice(-2);
var lastmonth = ("0" + now.getMonth()).slice(-2);
// Source
var lastmonthsheet = ss.getSheetByName([year] + "-" + [lastmonth]);
var thismonthsheet = ss.getSheetByName([year] + "-" + [thismonth]);
// Target
var exportsheet = ss.getSheetByName("Export");
// Set source ranges
var lastmonthdata = lastmonthsheet.getSheetValues(2,1,lastmonthsheet.getLastRow(),21);
var thismonthdata = thismonthsheet.getSheetValues(2,1,thismonthsheet.getLastRow(),21);
// Write values
exportsheet.getRange(exportsheet.getLastRow()+1, 1, lastmonthdata.length,21).setValues(lastmonthdata);
exportsheet.getRange(exportsheet.getLastRow()+1, 1, thismonthdata.length,21).setValues(thismonthdata);
}
答案 0 :(得分:0)
如果单元格Vx的值为"是",请获取第x行的值
获取cpy
的值,其列V为"是"
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("sheetname");
var cpy = []; //arrays to be copied
for (i=1;i<sheet.getLastRow();i++){
var vRng = sheet.getRange(i,22);
if (vRng.getValue() !== "YES"){continue} //"YES" is case sensitive
cpy.push(vRng.getRow())
}
Logger.log(cpy);
}
在for循环中使用cpy
。 tcpy
获取行的其余部分(带有值)。
for (i=0;i<cpy.length;i++){
var tcpy = sheet.getRange(cpy[i],1,1, sheet.getLastColumn()).getValues());
//in this for loop, you can add your setValues(tcpy)
}