【发布时间】:2020-03-10 20:11:08
【问题描述】:
我有这个包含 3 列的 Google 表格, data with three columns 这是数据: Data Source 我编写了一个脚本来过滤 A 列和 C 列何时满足某些条件 然后脚本在工作表“PharmacyV1”中生成结果。结果按预期生成,因为此工作表中有 14 行。
脚本的下一部分,我基本上过滤了与第一个条件完全相反的条件,基本上是抓取未过滤到工作表“Pharmacy V1”的数据并将其重写到原始工作表“V1”。
我的原始 V1 表包含 1,631 行数据(不包括标题)
我的 PharmacyV1 工作表过滤掉了 14 行数据
但 V1 结果以 1,575 行数据结束,但我应该预计 1631-14 = 1617 行。
有人能指出出现这种差异的原因或原因吗?
function S02_FilterPharmacy_Copy2NewSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('V1');
var firstRow = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues();
var C1 = firstRow[0].indexOf('TxnUser');
var C2 = firstRow[0].indexOf('Location');
// Filter for IV therapy and pharmacy users using filtered Range:
var rangeVals = sheet.getRange(1,1,sheet.getLastRow()-1,sheet.getLastColumn()).getValues();
var filteredRange = rangeVals.filter(function(val){
return val[C2] === "IV THERAPY" && (val[C1] === "DEOK645"|| val[C1] === "JETH850" ||
val[C1] === "JOON409"|| val[C1] === "THAM1452");
});
var targetSheet = ss.insertSheet('PharmacyV1');
targetSheet.getRange(2,1,filteredRange.length,filteredRange[0].length).setValues(filteredRange);
var sheet = ss.getSheetByName('V1');
targetSheet.getRange(1,1,1,sheet.getLastColumn()).setValues(firstRow);
//Filter and replace original V1
var rangeVals = sheet.getRange(1,1,sheet.getLastRow()-1,sheet.getLastColumn()).getValues();
var filteredRange = rangeVals.filter(function(val){
return val[C2] != "IV THERAPY" && (val[C1] != "JOON409"|| val[C1] != "JETH850" ||
val[C1] != "JOON409"|| val[C1] != "THAM1452");
});
var RANGE = sheet.getDataRange(); RANGE.clearContent();
var newRange = sheet.getRange(1,1,filteredRange.length, filteredRange[0].length);
newRange.setValues(filteredRange);
}
【问题讨论】:
标签: google-apps-script google-sheets filter