如果 E6:E 中的相应行不包含值“Out”,我想将值从 D6:D 复制到 H6:H。
迈克尔·乔丹 | 迈克尔·乔丹 | ||||||
贝比·鲁斯 | 贝比·鲁斯 | ||||||
乔蒙大拿 | 出 | ||||||
韦恩·格雷茨基 | 韦恩·格雷茨基 | ||||||
兰斯·阿姆斯特朗 | 兰斯·阿姆斯特朗 | ||||||
罗杰·费德勒 | 出 | ||||||
莱昂内尔·梅西 | 莱昂内尔·梅西 |
这是我尝试过的脚本:
function copyAllPresent() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName("Base");
const valuesToCopy = sheet.getRange(6,4,sheet.getLastRow(),1).getValues();
const rangeToPaste = sheet.getRange(6,8,sheet.getLastRow(),1);
valuesToCopy.forEach(r => {
if(r[4] != "Out") {
rangeToPaste.setValues(valuesToCopy);
}
})
}
这只是将整个范围 (D6:D) 复制到 H6:H,无论 E6:E 中的值如何。
在当前脚本中,在
rangeToPaste.setValues(valuesToCopy);
处,值 valuesToCopy
被放入“H”列中。这样,所有值都被放入“H”列中。当你的脚本修改时,作为一个简单的修改,下面的修改怎么样?
function copyAllPresent() {
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName("Base");
// Retrieve values from columns "D" and "E".
const valuesToCopy = sheet.getRange(6, 4, sheet.getLastRow(), 2).getValues();
// Create a new array.
const values = valuesToCopy.map(([d, e]) => [e != "Out" ? d : null]);
// Put the array to column "H".
sheet.getRange(6, 8, values.length).setValues(values);
}