如果相邻列不包含特定值,如何使用 Google Apps 脚本将列复制到同一工作表上的另一列

问题描述 投票:0回答:1

如果 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 中的值如何。

google-sheets google-apps-script
1个回答
0
投票

在当前脚本中,在

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.