0

私はグループ メンバーシップ リストを引き継いでいます。これは、数世代にわたるリーダーシップを通じて受け継がれてきましたが、よくわかりません...

スプレッドシート、列 10 のセルの値に基づいて (6 つの異なるオプションから) 各行の色を自動的に更新していましたが、不思議なことに更新を停止しました。

そこにあるスクリプトを見てきましたが、よくわかりません。誰かアドバイスはありますか? 大歓迎です!

function colorRow(r){

  // only uncomment for Debuging
  //r = 2;

  var sheet = SpreadsheetApp.getActiveSheet();

  var dataRange = sheet.getRange(r, 1, 1, sheet.getLastColumn());

  // will get the row
  var row = dataRange.getValues()[0];

  // change the row[8] to row[?] where ? is your column number
  var cellValue = row[10];

  if(cellValue == "1"){
    dataRange.setBackgroundRGB(255, 0, 255);
  }
  else if(cellValue == "2"){
    dataRange.setBackgroundRGB(255, 153, 0);
  }
  else if(cellValue == "3"){
    dataRange.setBackgroundRGB(153, 204, 255);
  }
  else if(cellValue == "4"){
    dataRange.setBackgroundRGB(0, 255, 0);
  }
  else if(cellValue == "5"){
    dataRange.setBackgroundRGB(0, 255, 255);
  }
  else if(cellValue == "6"){
    dataRange.setBackgroundRGB(255, 255, 0);
  }

  // not sure if I need to flush...
  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  colorRow(event.source.getActiveRange().getRowIndex());
}
4

1 に答える 1

1

色は列10の内容に依存すると言いますが、コードは示しています var cellValue = row[10];

配列のインデックスは 0 です。つまり、列 11 のコンテンツを取得していることを意味します...(スプレッドシートの列のインデックスは 1 です)

それが問題ではないでしょうか?

編集:スクリプトを見ている間、IFステートメントで別の条件を使用することをお勧めします。使用する条件は非常に壊れやすいためです。誰かが数字の前後にスペースを入力すると、失敗します... What I ' d do は次のようなものです。

  if(cellValue.toString().match("1") == "1"){

セル内に単独でなくても値「1」を「キャッチ」し、値 9 まで機能します (その後、10、11 などと混同することになります...) (ただし、これは提案...;)

于 2013-01-28T09:30:12.783 に答える