Google apps script 基于特定列值筛选图纸

Google apps script 基于特定列值筛选图纸,google-apps-script,filter,Google Apps Script,Filter,我正在尝试根据以下3列值筛选工作表。我是新的应用程序脚本编程,任何建议将不胜感激 添加图像:必须使用变量“JobID”过滤JobID,并且必须在变量“fromdate”和“todate”之间过滤BOLDate。因此,结果中只有表中的前6行,因为最后一行不在日期范围内 #3 Filters var fromdate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form').getRange(3,10).getValue(); v

我正在尝试根据以下3列值筛选工作表。我是新的应用程序脚本编程,任何建议将不胜感激

添加图像:必须使用变量“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

}
#3个过滤器
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();
#阅读输入表并在3列上应用以下过滤器-使用JOBID和JOBID对JOBID进行过滤
BOLDATE在fromdate和todate之间过滤。
var Sheet_Input=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Input');
var Sheet_Input_Data=Sheet_Input.getDataRange().getValues();
对于(变量i=0;i
函数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');
常量fr=fm.getRange(3,10).getValue()
const frv=新日期(fr).valueOf();
常量to=fm.getRange(3,11).getValue();
const tov=新日期(至).valueOf();
const id=fm.getRange(3,12).getValue();
设row=[];
vs.forEach((r,i)=>{
设dtv=新日期(r[7])。valueOf();
如果(dtv>=frv&&dtv
函数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');
常量fr=fm.getRange(3,10).getValue()
const frv=新日期(fr).valueOf();
常量to=fm.getRange(3,11).getValue();
const tov=新日期(至).valueOf();
const id=fm.getRange(3,12).getValue();
设row=[];
vs.forEach((r,i)=>{
设dtv=新日期(r[7])。valueOf();

如果(dtv>=frv&&dtv,你的问题是什么?代码是否正常工作?如果出现任何错误怎么办?@Cooper:不,我不知道如何在“工作表输入数据”上实现过滤器你能提供一个数据表吗?注意:我不会跟踪你帐户中文件的链接。这将创建一个表,你可以根据电子表格数据发布。@Cooper:我已经添加了表和说明。谢谢你的帮助。你的问题是什么?代码是否有效?如果你遇到任何错误怎么办?@Cooper:不,我不知道如何实现“Sheet\u Input\u Data”上的筛选器是否可以提供一个数据表。注意:我不会跟踪到您帐户中文件的链接。这将创建一个表,您可以根据电子表格数据发布。@Cooper:我已添加了表和说明。感谢您的帮助,我收到了一个错误,即“r”未定义。不确定“r”和“I”是什么变量就像我说的,你给我数据,我会测试它,让它工作。在这种情况下,r是vs中的一行数据,我是vs中该行的索引。你可以通过在Array.forEach()方法下访问你最喜欢的javascript引用了解更多。谢谢你的回答,它工作!!我得到错误,没有定义“r”。不确定是什么变量“r”“我”的意思是,就像我说的,你给我数据,我会测试它,让它工作。在这种情况下,r是vs中的一行数据,我是vs中该行的索引。你可以通过访问你最喜欢的javascript引用Array.forEach()方法了解更多信息,谢谢你的回答,它工作!!
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);
}