しゃのんあどべんとかれんだー 2日目 (忘年会幹事のちょっとしたお悩みをちょっと解決してくれるかもしれない GAS)

このエントリーをはてなブックマークに追加

この記事は Shanon Advent Calendar 2015 の 2日目の記事です。

というわけで、本日も私 munepom ( @__munepom__ ) がお送りします。
本日は飲み会後の帰宅のため、どうしよう。。。30分で書けるネタが。。。あ、ありました。

12月といえば、そう、忘年会シーズンですね!
シャノン技術統括本部でも、やりまーす!
私は今年の7月に入社したてのほやほやですが、早速幹事をつとめることになりましたw

まずは、参加人数を把握せねばなりませんね。
というわけで、出欠管理ツールとして、Google スプレッドシートを利用することにしました。
んが、特定背景色のセル数をカウントしようとしたら、意外と手間がかかりましたので、メモしておきます。

スプレッドシートの『ツール』メニューより『スクリプト エディタ』開き、
下記のちょっとしたスクリプトを書いて保存して、
セル中に定義した式と引数を与えると、すんなりと解決しました。

// 指定範囲のセル背景色に合致するセルの合計数を返します
// color: 背景色    rangeSpecification: 範囲指定文字列
function countCellsWithBackgroundColor(color, rangeSpecification) {
  
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var range = sheet.getRange(rangeSpecification);
  
  var x = 0;
  var i = 0;
  var j = 0;
  var cell;
  for (i = 1; i <= range.getNumRows(); i++) {
    for (j = 1; j <= range.getNumColumns(); j++) {
      
      cell = range.getCell(i, j);
      
      if(cell.getBackgroundColor() == color)
        x++;
    }
  }
  
  return x;
}

ん?引数として与える背景色がわからない?
じゃあ、下記スクリプトも追加しましょ!

// 指定セルの背景色を取得します。
function getBackgroundColor(rangeSpecification) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  return sheet.getRange(rangeSpecification).getBackgroundColor();
}

というわけで、指定範囲の特定背景色に合致するセルの合計数を記録したいセルに、
=countCellsWithBackgroundColor(getBackgroundColor("A8"), "A1:A31")
のような式を書くと、無事カウントが記録されました。
(Loading に時間がかかる場合があります!)

さて、他にも知っておくと役立つことがありますので、またどこかで投稿するかもしれません。
忘年会幹事のみなさま、がんばりましょう!

Enjoy!

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...