Google Apps脚本[电子表格日期]

时间:2014-09-30 16:54:01

标签: google-apps-script

我有2列 'StartDate'和'EndDate'

是否可以进行验证以检查'EndDate'是否早于'StartDate',反之亦然? 我不知道是否要在电子表格本身或通过脚本进行验证。

2 个答案:

答案 0 :(得分:0)

您可以使用电子表格内置数据验证功能(菜单数据>验证)轻松完成此操作。使用“自定义公式”验证,只需键入=B1>A1(假设您的2列是第1列)。

或者使用onEdit触发器在脚本中执行此操作,这也很简单,但不如上面那么多。

- 修改

如果您还必须检查单元格是否为日期,则可以使用以下公式作为数据验证:

=AND(DateValue(B1),B1>A1)

使用onEdit触发器看起来像这样:

function onEdit() {
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() !== 'Sheet1' ) return; //check if it's the sheet we want to monitor
  var r = s.getActiveRange();
  if( r.getColumn() !== 2 ) return; //check if it's the column we're interested
  var v = r.getValue();
  if( typeof v !== 'object' ) {
    r.setValue('');
    return SpreadsheetApp.getUi().alert('Enter a valid date!');
  }
  var vA = r.offset(0, -1).getValue();
  if( typeof vA === 'object' ) {
    if( vA.getTime() >= v.getTime() ) {
      r.setValue('');
      return SpreadsheetApp.getUi().alert('Enter a date bigger than start date!');
    }
  } //what to do if there is no date in column A?
}

请注意,此代码不会检查开始日期是否已更改,因此可以将其更改为大于结束日期的值。但是如果你使用这个代码解决方案,你应该可以从这里获取它。

答案 1 :(得分:0)

您还可以将日期转换为整数并比较值。 if(int(enddate-startdate< 0,做某事,做别的事)