2017-06-28 1 views
0

AppScriptで特定のリスト(クライアントシートの列Aのみ)に新しい色を割り当てる関数をコーディングしようとしています。最大到達範囲の場合、配列の繰り返しを使用します。

1はclientlistアレイは2 3 3に1のhexcolorをリストBGCOLORアレイである (LASTROWまで行2)cli​​entsheetカラムAに依存3

1のhexcolorをリストfncolorアレイであります

私が必要とするのは、各クライアントリストをスキャンしてbgcolorとfncolorから対応する色を指定することです。最大bgcolorとfncolorが満たされていてもclientlistに値が残っていると、配列は再び開始と再開に戻ります。どのように色を付けるのだろうと私は失われているこの既存のコードを持っているが、私は何かが欠落していると思う。

私の誰かが私の問題を解決できることを願っています。ありがとう。我々はデータ配列を反復しながら、我々は色配列を使い果たした後、我々は最初から始めるので、我々は次に、背景色インデックスを使用し、%演算子を使用して得ることができる

function newAssignColor() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var clientLists = ss.getSheetByName('Clients'); 

    var bgcolors = [['#000000'], ['#000033'], ['#000066']]; 
    var fncolors = [['#ffffff'], ['#ffffff'], ['#ffffff']]; 

    var r = clientLists.getRange(1, 1, clientLists.getLastRow(),1); 
    var data = r.getValues(); 

    for (var i=1; i<=data.length; i++) {  
      if (i-1 <= bgcolors.length) { 
      var j = i-1; 
      i = j; 
      } 
      else { var j = 0; i =j;} 

      if (data[i][0] !== "") { 
      clientLists.getRange(i,1,1,1).setBackground(bgcolors[j][0]); 
      clientLists.getRange(i,1,1,1).setFontColor(fncolors[j][0]); 
    }} 
} 

答えて

1

。再び。コードスニペットは次のとおりです。

が行2のときに最大の色を開始リスト内の各項目の新しい色を割り当てる:ここ

function newAssignColor() { 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var clientLists = ss.getSheetByName('Clients'); 

    var bgcolors = ['#000000', '#000033', '#000066']; 
    var fncolors = ['#ffffff', '#fffff0', '#fffff1']; 

    var r = clientLists.getRange(1, 1, clientLists.getLastRow(),1); 
    var data = r.getValues(); 

    for (var i=0; i<data.length; i++) { 
    Logger.log("Data Value " + i + " : " + data[i]); 
    var totalBgColors = bgcolors.length; 
    var totalFgColors = fncolors.length; 

    var bgColor = bgcolors[i%totalBgColors]; 
    var fgColor = fncolors[i%totalFgColors]; 
    Logger.log("BG Color: " + bgColor); 
    Logger.log("FG Color: " + fgColor); 

    } 
} 

ここで最終コードが所定のコードのManishするクレジット出力

enter image description here

+0

ありがとうございます!ちょうどリルビットを修正する必要がありますが、それは本当に助けられました..感謝マンシ! – SBBmaster09

+0

いつもよろしいですか?@ SBBmaster09 – manish

1

あります到達したら、配列の最初の色に繰り返します。

function newAssignColor() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var clientLists = ss.getSheetByName('Clients'); 

    var bgcolors = [['#000000'], ['#000033'], ['#000066']]; 
    var fgColors = [['#ffffff'], ['#ffffff'], ['#ffffff']]; 

    var r = clientLists.getRange(1, 1, clientLists.getLastRow(),1); 
    var data = r.getValues(); 

    for (var i=2; i<=data.length; i++) {  
    var totalBgColors = bgcolors.length; 
    var totalFgColors = fgColors.length; 

    var bgColor = bgcolors[i%totalBgColors]; 
    var fgColor = fgColors[i%totalFgColors]; 

      if (data[i] !== "") { 
      clientLists.getRange(i,1,1,1).setBackground(bgColor); 
      clientLists.getRange(i,1,1,1).setFontColor(fgColor); 
    }} 
} 
関連する問題