首页 > 解决方案 > 用于过滤过滤范围内的唯一数据的 Google Apps 脚本

问题描述

我有一个类似于这个的数据

数据截图

首先,我过滤掉了第 N 列标记为是的范围,我成功地得到了它。然后我想过滤掉A列中的所有唯一值以及M列中的值,并返回唯一值的行号。请帮我解决这个问题。

所以结果将是这样的范围/数组:

[[HCMC 1, handoi3648@gmail.com, 1 (/// row 1 of the filtered range)],
[HCMC 4, handoi3648@gmail.com, 3 (/// row 3 of the filtered range)],
[HCMC 5, handoi3648@gmail.com, 4 (/// row 4 of the filtered range)]]

我的代码到第一个过滤范围如下

function HouseLeaseReminderAtYE(){
var SS = SpreadsheetApp.getActiveSpreadsheet();
var Sheet = SS.getSheetByName("Tax_Master");
var Range = Sheet.getDataRange();
var Values = Range.getDisplayValues();
var hl_to_remind_at_final_range = Values.filter(function(item){return item[13]==="Y"});}

标签: google-apps-script

解决方案


function HouseLeaseReminderAtYE() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sh = ss.getSheetByName("Tax_Master");
  const rg = sh.getDataRange();
  const vs = rg.getDisplayValues();
  let fvs = vs.filter(function (item) { return item[13] == "Y" });
  let uO = {pA:[]};
  fvs.forEach((r,i) => {
    if(!uO.hasOwnProperty(r[0])) {
      uO[r[0]] = [r[0],r[12],i+1];
      uO.pA.push(r[0]);
    }
  });
  let uA = uO.pA.map( p => [uO[p]]);
  Logger.log(uA);
}

推荐阅读