当前位置: 首页 > 知识库问答 >
问题:

Google脚本:从带有今天日期的行获取值

房子昂
2023-03-14

我正在使用谷歌工作表脚本,并试图识别超过某个阈值的值。在这种情况下,有3个变量f1、f2和pf。当最高值的单元格(在三个单元格中)超过500时,它将把该值写入另一个单元格。最终游戏是创建一个onEdit触发器,它将能够在每天输入值时自动检查值,并在突破限制时发送电子邮件通知。但是为了简单起见,我暂时忽略了这一点。我正在努力从包含今天日期的行中获取脚本以获取值()。

下面是一个数据示例

      A          B       C        D
    ____________________________________
1   |                  H2S values
2   | Date       f1      f2      pf
3   |30/10/17   971.4   1037.6   809
4   |31/10/17   795.6   795.1    576
5   |01/11/17    429    444.3   351.8

它取的不是带有今天日期的行,而是日期范围的顶部行。代码的其余部分在限制和取最高值方面工作,但是我不知道如何将行与日期匹配。Today_row应该返回与日期匹配的行号,即在01/11/17Today_row应该等于5,但是它返回日期范围中的第一行,因此它返回第3行。

下面是我正在处理的代码

 function readCell() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();

  // set today's date
  var date = sheet.getRange("F1").setValue(new Date());
  // look up date range
  var daterange = sheet.getRange("A3:A");
  // find the row position of today's date
   if (date = daterange) {
   var today_row = daterange.getRow();
   var today_set = sheet.getRange("F2").setValue(today_row); }

  // set today's variables and show value in cell
    var today_h2s_f1 = sheet.getRange("B"+today_row).getValue();
    var today_f1_set = sheet.getRange("F3").setValue(today_h2s_f1);
    var today_h2s_f2 = sheet.getRange("C"+today_row).getValue();
    var today_f2_set = sheet.getRange("F4").setValue(today_h2s_f2);
    var today_h2s_pf = sheet.getRange("D"+today_row).getValue();
    var today_pf_set = sheet.getRange("F5").setValue(today_h2s_pf);

  // Set value of cell if the h2s level exceeds 500ppm, highest value out of f1,f2 and pf is chosen
    if (today_h2s_f1 > 500 && today_h2s_f1 > today_h2s_f2 && today_h2s_f1>today_h2s_pf) {
      var highest_h2s = sheet.getRange("F6").setValue(today_h2s_f1)}
    else if (today_h2s_f2 > 500 && today_h2s_f2 > today_h2s_f1 && today_h2s_f2 >today_h2s_pf){
      var highest_h2s = sheet.getRange("F6").setValue(today_h2s_f2)}
    else if (today_h2s_pf > 500 && today_h2s_pf > today_h2s_f1 && today_h2s_pf >today_h2s_f2){
      var highest_h2s = sheet.getRange("F6").setValue(today_h2s_pf)}
  }

任何帮助都将不胜感激-谢谢。

共有1个答案

陶树
2023-03-14

获取daterange将为您提供一个Range Object,您需要迭代该对象以匹配特定的单元格。首先,我们需要获得一个日期范围,然后在比较之前取消时间戳信息。进行以下更改:

// set and store a date object for today
var date = sheet.getRange("F1").setValue(new Date()).getValue();

// Get the range of dates to test
var daterange = sheet.getRange("A3:A").getValues()

// iterate the values in the range object
for(var i=0; i<daterange.length; i++) {

  // Compare only month/day/year in the date objects
  if(new Date(daterange[i]).setHours(0,0,0,0) == date.setHours(0,0,0,0)) {

    // if there's a match, set the row
    // i is 0 indexed, so add 3 to get the correct row
    var today_row = (i+3);

    // rest of your code
  }
}

我还没有测试if块中设置的每个变量,但该位返回正确的日期计算值以及正确的行。

 类似资料:
  • 问题内容: 我正在使用Selenium IDE 测试我的Web应用程序。在某些测试案例中,我必须断言今天的日期出现在页面上。我无法在测试中对今天的日期进行硬编码,因为今天的日期每天都在变化。如何获取Selenium IDE中的当前日期,月份和年份? 问题答案: 不知道您的日期采用什么格式,但是您可以执行以下操作:

  • 获取今天的日期(年、月、日) 用法 Your browser does not support the video tag. 案例:小闹钟 功能:2019年12月25日,播放圣诞快乐歌

  • 在GoogleSheets中,当a列中的日期等于或早于今天的日期时,我需要一个脚本来自动隐藏工作表1中的行。 因此,如果今天是2018年8月29日,单元格A3中的日期是2018年8月28日,则第3行的所有内容都将隐藏 但是如果A3单元格中的日期是2018年8月30日,那么所有第3行都将是可见的,直到当前日期是2018年8月31日。 谢谢你能提供的任何帮助。 我一直在使用这段代码,我发现它隐藏了行,

  • 问题内容: 如何在Sparksql中获得一天,与mysql中相同。 问题答案: 算术函数使您可以对包含日期的列执行算术运算。 例如,您可以计算两个日期之间的差额,为日期添加天数或从日期中减去天数。内置的日期计算功能包括,, ,,, ,和。 我们需要的是 date_sub(时间戳记开始日期,整数天),用途:从TIMESTAMP值中减去指定的天数。第一个参数可以是字符串,如果它使用可识别的格式(如TI

  • 问题内容: 换句话说,我想要提供Joda-Time的功能: 但没有Joda-Time,只有java.util.Date。 不推荐使用.setHours()等方法。有没有更正确的方法? 问题答案: 由于不推荐使用这些方法,因此您可以使用: 如果最终需要一个对象,只需调用