2017-09-14 7 views
1
function colorEntireRowGreenWhenDateOfEventMatchesCurrentDate() { 

    var data = SpreadsheetApp.getActiveSheet(); 
    var dateColumn = data.getRange("C2:C15").getValues(); 
    var todaysDate = new Date(); 
    Logger.log(data) 

    for (i=0; i=dateColumn.length; i++) { 
    if (dateColumn[i] = todaysDate) { 
     data.setTabColor("#3c643c"); 
    } 
    } 
} 

簡単にリクエストできます。 C列の日付入力が今日の日付と一致すると、行全体が緑色になります。シェル内の日付が今日の日付と一致する場合の色全体行

+0

がコードのあなたの部分に問題は何である –

答えて

1

コードに複数の問題があります。

まず、あなたはまた、日付を比較するための最良の方法はgetTime() methodを使用して時間を比較することである

if (dateColumn[i] = todaysDate) { 

代わりの

if (dateColumn[i] == todaysDate) { 

あなたの日付comparaisonにミスを犯しました。 Compare two dates with JavaScript

あなたはRange.setBackground(String) methodRange.setBackgroundRGB(red, green, blue) methodを取得しようとすると、シートのタブの色を変更Sheet.setTabColor(String) methodを使用するようにしてください:このSO質問にも参照してください。ここで

は、ソリューションです:

function colorEntireRowGreenWhenDateOfEventMatchesCurrentDate() { 

    var data = SpreadsheetApp.getActiveSheet(); 
    var range = data.getRange("C2:C15"); 
    var values = range.getValues(); 
    var today = new Date(); 
    var todaysDate = new Date(today.getFullYear(), today.getMonth(), today.getDate()); 
    Logger.log(data); 
    range.setBackground(null); 

    for (var i in values) { 
    var d = values[i][0]; 
    if (d.getTime() === todaysDate.getTime()) { 
     var row = parseInt(i) + 1; 
     data.getRange(range.getCell(row, 1).getRow(),1,1,data.getMaxColumns()).setBackground('#3c643c'); 
    } 
    } 
} 
+0

私は 'TypeErrorを取得しています:オブジェクト内のgetTime関数を見つけることができません(行14、ファイル "コード")'エラーコードをデバッグするとき、私は 'd'オブジェクト。 – Greconomist

+0

スプレッドシートで日付形式を使用する必要があります。そうでない場合は、日付日付とスプレッドシート日付の間の比較はできません。 –

0

ドキュメントによれば、thisはセルの背景色を設定する方法を説明しています。どちらでも使用できますsetBackgroundまたはsetBackgroundRGB

+1

回答は、彼らが働くべき理由の説明とのより良い仕事 – apokryfos

+0

@apokryfos?。確かに、私は参照を追加しています –

0

これは、条件付き書式をはるかに簡単に行うことができます。 A2のカスタム数式を使用します。

=$C2:$C=today() 

設定範囲A2:F(あなたの最後のデータ列に変更F

関連する問題