2014-09-30 66 views
0

我有2列 「起始日期」和「結束日期」谷歌Apps腳本[電子表格日期]

是否有可能做驗證,以檢查「結束日期」不能比「起始日期」前面,反之亦然? 我不知道驗證是在電子表格本身上完成還是通過腳本完成。

回答

0

您可以使用電子表格內置數據驗證功能(菜單數據>驗證)輕鬆完成此操作。使用「自定義公式」驗證,只需輸入=B1>A1(假設您的2列是前2列)。

或者在使用onEdit觸發器的腳本中執行此操作,這也很容易,但不如上述那樣多。

--edit

如果你還需要檢查電池是一個日期,你可以用下面的公式數據驗證:

=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? 
} 

請注意,此代碼不會檢查開始日期是否已更改,因此可以隨後將其更改爲大於結束日期的值。但是,如果你使用這種代碼解決方案,你應該能夠從這裏拿走它。

+0

謝謝!不知道這是那麼容易! – chopz 2014-10-01 03:58:54

+0

嗨,我已經有一個驗證,確保日期是一個有效的日期。是不是添加另一個新的規則的選項,如何通過onEdit觸發器來完成? – chopz 2014-10-02 06:50:21

+0

再次感謝! 對於= B1> A1,我如何檢查整個列而不是僅僅一個單元? – chopz 2014-10-02 13:44:28

0

您也可以將日期轉換爲整數並比較值。 if(int(enddate-startdate < 0,do something,do something else)

相關問題