返回满足条件的某些行-Google Apps脚本

问题描述 投票:0回答:1

[我正在尝试做的是:我有一个列表,N是日期,O是复选框。我需要获取=N < Today() && O=False的行,然后是那些相应行的return A:B。我已经尝试了每种方式,但无法正常工作。有什么建议么?

function msg1(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var wscl = ss.getSheetByName('Connection List');
  var contact = wscl.getRange("A2:B").getValues();
  var msg1date = wscl.getRange("N2:N").getValues();
  var msg1sent = wscl.getRange("O2:O").getValues();
  var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
  var now = new Date();
  var yesterday = new Date(now.getTime() - MILLIS_PER_DAY);
  for(var i=0;i<msg1sent.length;i++){
    if(msg1sent =="FALSE"&& msg1date < yesterday){ 
      var row=i+1; 
    }
  }
 } 
for-loop if-statement google-apps-script filtering criteria
1个回答
0
投票

如果使用复选框的getValues(),它将返回true或false布尔值。如果使用getDisplayValues(),它将返回“ TRUE”或“ FALSE”字符串。对于日期,我只使用了valueOf(),但您也可以使用getTime();

function msg1(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Connection List');
  var ct=sh.getRange(2,1,sh.getLastRow()-1,2).getValues();
  var date=sh.getRange(2,14,sh.getLastRow()-1,1).getValues();//date
  var sent=sh.getRange(2,15,sh.getLastRow()-1,1).getValues();//checkbox
  var dt=new Date();
  var rows=[];
  var today=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
  for(var i=0;i<sent.length;i++){
    var t1=sent[i][0];
    var t2=new Date(date[i][0]).valueOf();
    var t3=today;
    if(sent[i][0]==false && new Date(date[i][0]).valueOf()<today){ 
      rows.push(ct[i]);
    }
  }
  Logger.log(rows);
 }
© www.soinside.com 2019 - 2024. All rights reserved.