【问题标题】:Filter a sheet based on specific column values根据特定列值过滤工作表
【发布时间】:2021-03-25 18:58:51
【问题描述】:

我正在尝试根据以下 3 列值过滤工作表。我是 Apps 脚本编程的新手,如有任何建议,将不胜感激。

添加了图像:必须使用变量“jobid”过滤 JobID,并且必须在变量“fromdate”和“todate”之间过滤 BOLDate。因此,结果将只有表中的前 6 行,因为最后一行不在日期范围内。

#3 Filters

var fromdate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form').getRange(3,10).getValue();
var todate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form').getRange(3,11).getValue();
var jobid = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form').getRange(25,5).getValue();

#Read the input sheet and apply the following filters on 3 columns - JOBID is filtered with jobid and
BOLDATE is filtered between fromdate and todate.

var Sheet_Input = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Input');
var Sheet_Input_Data = Sheet_Input.getDataRange().getValues();

for (var i = 0; i < Sheet_Input_Data.length; i++) {
  var JobID = Sheet_Input_Data[i][0];
  var BOLDate = Sheet_Input_Data[i][7];
  
  #Trying to do the filter and get resultant rows

}

【问题讨论】:

  • 你有什么问题?代码有效吗?如果您遇到任何错误怎么办?
  • @Cooper:不,我不知道如何在“Sheet_Input_Data”上实现过滤器
  • 能否提供数据表。注意:我不会跟踪指向您帐户中文件的链接。
  • 这将创建一个表格,您可以从电子表格数据中发布该表格。 Link
  • @Cooper:我已经添加了表格和解释。感谢您的帮助

标签: google-apps-script filter


【解决方案1】:
function findData() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Input');
  const vs=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).getValues();
  const fm=ss.getSheetByName('Form');
  const fr=fm.getRange(3,10).getValue()
  const frv=new Date(fr).valueOf();
  const to=fm.getRange(3,11).getValue();
  const tov=new Date(to).valueOf();
  const id=fm.getRange(3,12).getValue();
  let row=[];
  vs.forEach((r,i)=>{
    let dtv=new Date(r[7]).valueOf();
    if(dtv>=frv && dtv<=tov && id==r[0]) {
      row.push(r);
    }
  });
  Logger.log(r);
}

提供我可以复制和粘贴的数据,我会测试它,否则你可以测试它。

【讨论】:

  • 我收到“r”未定义的错误。不确定变量“r”和“i”是什么意思
  • 就像我说的你给我数据,我会测试它并让它工作。
  • 在这种情况下,r 是 vs 中的一行数据,i 是 vs 中该行的索引。您可以通过在 Array.forEach() 方法下转到您最喜欢的 javascript 参考来了解更多信息,
猜你喜欢
  • 2016-01-06
  • 2021-06-10
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 2019-09-20
  • 1970-01-01
  • 2021-06-17
相关资源
最近更新 更多