2017-10-26 11 views
0

B1 + 2daysの日付がtodayより大きい場合、他のユーザーから文書を保護したいと考えています。Googleスクリプト - "If"比較が機能しない

私は保護部分に問題はありませんでしたが、理解できないいくつかの奇妙な理由でIF文が動作しません。

これは私が日付を比較するスクリプトです:私は日によって日付の日を比較する必要があるので、私は時間/分/秒などを0に設定し

ss = SpreadsheetApp.getActiveSheet(); 
send_date = ss.getRange("B1").getValue(); 
    limit = new Date(send_date.setDate(send_date.getDate()-2)) 
    limit.setHours(0,0,0,0) 
    day0 = new Date(); 
    day0.setHours(0,0,0,0) 
    ss.getRange("D1").setValue(day0); 
    ss.getRange("D2").setValue(limit); 
    ss.getRange("D3").setValue(limit>day0); 
    ss.getRange("D4").setValue(limit<=day0); 
    if (day0>limit) { ss.getRange("C1").setValue("can be edited");} 
    else if (day0<=limit) { ss.getRange("C1").setValue("cannot be edited");} 

スクリプトを実行した後はどうなりますか?

たとえば、if B1 = '2017-10-24'の場合、D1は今日( '2017-10-26')に設定され、D2は( '2017-10-22')に設定されます。

D3、limit>day0比較値がFALSE、D4 limit<=day0TRUEとなる。

これまでのところ、IF文では、これらの比較が逆転しているようです。

この例では、C1は「編集可能」に設定されています。

私にとっては、最初の比較がFALSEを返し、2番目がTRUEを返したことを意味します。

今後日付(つまり「2017-10-30」)に日付を設定すると、D1-D4フィールドに正しい値が表示されますが、C1は「編集できません」に設定されます。

私は何か助けに感謝します。

+0

可能な重複)(私は.getTimeでday0と制限を置き換え(https://stackoverflow.com/questions/492994/compare-two-dates-with-javascript) – Tigger

答えて

0

ではなく、の2つのオブジェクト(day0limit)を比較してください。

ただし、これらの2つのオブジェクトの値を比較できます。たとえば、getTime()を使用します。

var day0Time = day0.getTime(); 
var limitTime = limit.getTime(); 
if (day0Time > limitTime) { 
    // do stuff 
} 
+0

[はJavaScriptを持つ2つの日付を比較します]値は、それでも動作しません。 何が私を挽回するのは、たとえそのような日付を比較できないとしても、IFの同じ条件が逆に働く間に、setValueの条件が正しく動作する(TRUEを返す)ということです。 – PrzemekS

+0

他の何かが間違っているかもしれません。 'if'文の前に' * .getTime() 'の値をコンソール化するためにダンプします。 – Tigger

+0

B1が '2017-10-24'の場合、.getTime()は1508968800000を返します。 現在の日付は1508623200000です。 – PrzemekS

関連する問題