5

注意: 私はコーディングに精通しておらず、Google スクリプトも初めてです。

スクリプト内の背景色をテストしようとしています。具体的には、名前の配列を名前付き範囲に格納し、緑色に設定されたセルの数を数えたいと考えています。
これまでのところ、次のものがありますが、エラーが発生します: TypeError: Cannot set property "0.0" of undefined to "#00ff00"

function testCount(range) {

  var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange");
  var names = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange").getValues();

  var NumColumns = ranges.getNumColumns();
  var NumRows = ranges.getNumRows();
  var c = 0;

  for (var i = 0; i<NumColumns; i++){
    for (var j = 0; j<NumRows; j++){
      if (ranges.getBackgrounds()[i][j] ="#00ff00"){ 
        c++;
      }else{
        c=c;
      }
    }
  }
  return c;

色付きのセルに対して次のことを試したときに、緑の値を取得しました

return ranges.getBackgrounds()[0][1];
4

1 に答える 1

7

コードを少し掃除する必要があるようです。編集内容について説明します。

function testCount() {

  var ranges = SpreadsheetApp.getActiveSpreadsheet().getRangeByName("testrange");

var namesラインは使わないらしいので不要です。

  var NumColumns = ranges.getNumColumns();
  var NumRows = ranges.getNumRows();

すべてのセルの背景を一度に取得し、それを変数に格納します。

  var backgrounds = ranges.getBackgrounds();
  var c = 0;

  for (var i = 0; i<NumColumns; i++){
    for (var j = 0; j<NumRows; j++){

backgrounds上で作成した変数を参照します。また、最初の数字は行番号、2 番目の数字は列番号です。そのため、元々持っていたものと交換iしたいと思うでしょう。jまた、変数 a に値 10 をa = 10 代入します。等しいかどうかを確認するには、 を使用します==。これにより、2 つの値が同じかどうかがチェックされます。

      if (backgrounds[j][i] == "#00ff00"){ 
        c++;
      }

else何もしないという声明を出す必要はありません。その部分を残すことができますelse

    }
  }
  return c;
}
于 2013-03-03T01:07:40.930 に答える