2016-08-10 10 views
0

コンテキスト:シート内の別の場所にタスクの詳細を入力することに基づいて、開始日と終了日を表示する内部シートカレンダーに色付けするシート用スクリプトを作成しています。他の変数を何度も増やしているループ

奇妙な状況:増加する列ごとに開始日を設定します。添付されている図に示すように、colCountは余分な時間を増分します。 COLCOUNTは

http://i.imgur.com/2kNGTIG.png(終了日前に細胞に仕上げ)ブルー塗装されるべきであるどのように多くの細胞を追跡する - タスクの詳細をシート1

http://i.imgur.com/KhNBi4Q.png - シート2をカレンダーで、絵は

発生場所を示します

colCountが何度も増分されているのはなぜですか?

for (var k = 2; k < 100; k++){ //iterate over rows (searching tasks) 

     if (ss2.getRange(k, 1).getValue() === task){ //check correct row for task 

     var colCount = 1; 
     var start; 
     for (var i = 2; i < 100; i++){ //iterate over columns (searching dates) 
      var dateCell = ss2.getRange(1, i).getValue().getTime(); //this is cell that has date 

      if (dateCell == startDate){ 
      start = i; //set column where start date is 
      } 
      else if (dateCell != endDate && dateCell != startDate){ 
      colCount++; 
      } 
      else if (dateCell == endDate){ 
      e.range.setNote("4.5: - start " + start + " - colCount " + colCount); 
      ss2.getRange(k, start, 1, colCount).setBackground("#4d79ff"); //set blue 
      ss2.getRange(k, i).setBackground("#fe4343"); //set red, working fine 
      return; 
      } 
     } 
     } 
    } 

編集:私が望むものを達成する別の方法が見つかりました。私はちょうど線を使用しました

塗装する列の数を取得し、次にcolCountの代わりにcolsを使用してください。

答えて

1

私はあなたが行kにしているので、あなたの問題はラインに

var dateCell = ss2.getRange(1, i).getValue().getTime(); 

はあなたが範囲(k,i)を取得してはいけませんかもしれないと思いますか?

関連する問題