Google脚本在日期值循环中执行IF语句

时间:2018-12-28 05:42:39

标签: for-loop if-statement google-apps-script google-sheets

我正在研究一个脚本来自动执行每日复制+粘贴(作为值)功能。我已经逐步研究了它,最后一个问题是循环的if语句,该语句查看相对于当前日期的日期。

您可以看到B列是我的“日期”列,而在第1行AN中,我输入了today()函数。

基本上,每天我都会复制并粘贴(作为值)与“今天”日期匹配的任何行(列I-AM),将其突出显示为灰色,然后隐藏这些行。一旦可以为循环设置if语句以识别正确的行,就可以在早晨设置每日触发器以运行该函数。

下面是代码-非常感谢所有帮助!

function dailyUpdate() 
{
  var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copy of Results');
  var dateValues = sht.getRange(2,2,1231).getValues();
  for (r=1; r<1232; r++)
    var todayValue = sht.getRange(1,39).getValue();
    var dateValues = sht.getRange(r,2).getValues();
    if(dateValues == todayValue)
    {
      var source = sht.getRange(r,9,1,31);
      source.copyTo(sht.getRange(r,9,1,31), {contentsOnly: true});
      sht.hideRow(source)
      source.setBackground("grey");
  }
}

1 个答案:

答案 0 :(得分:0)

您正在比较sht.getRange(1,39).getValue()sht.getRange(r,2).getValues()getValue()返回一个值,而getValues()返回一个2D数组。 而且由于您在工作表中使用公式,请尝试使用getDisplayValue()而不是getValues()

尝试这样的事情:

function dailyUpdate()  {
  var sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Copy of Results');
  var todayValue = sht.getRange(1,39).getDisplayValue();
  for (r=1; r<1232; r++) {
    var dateValue = sht.getRange(r,2).getDisplayValue();
    if(dateValue == todayValue) {
      var source = sht.getRange(r,9,1,31);
      source.copyTo(sht.getRange(r,9,1,31), {contentsOnly: true});
      sht.hideRow(source)
      source.setBackground("grey");
    }
  }
}