google-apps-script - 根据特定列值过滤工作表
问题描述
我正在尝试根据以下 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
}
解决方案
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);
}
提供我可以复制和粘贴的数据,我会测试它,否则你可以测试它。
推荐阅读
- c# - 如何制作字符串变量文字?
- python - 用元素组合替换列表中的变量
- python - 获取 AttributeError:运行 cx_Freeze 可执行文件时,模块“tensorflow_estimator.python.estimator.api.estimator”没有属性“__file__”
- python - 从根类外部更改按钮颜色
- javascript - Reactjs 通过键和值过滤状态
- java - 找不到 org.springframework.cloud:spring-cloud-dependencies:pom
- node.js - 由于 node.js 的异步性,不会发生更改
- hyperledger-fabric - 部署基于 nodejs 的链码时超时
- jquery - JQuery 从 REST 服务返回 401 Unauthorized
- controller - Loadrunner 12.60:控制器未能保存负载测试场景