Power Automateを動画で学ぼう!Udemyキャンペーン中

officeスクリプト(Office Scripts)でExcelのセル色を取得する方法!

目次

はじめに

この記事はOfficeスクリプト(Office Scripts)について解説しています。Officeスクリプトの実行環境をまだお持ちでない方は下記の記事で、無料のテスト環境を用意する方法を紹介していますので参考になさってください。企業担当者の方、個人の方でも利用可能です。

じょじお

Office Scriptsの基本操作は下記の記事で解説しています。

Officeスクリプト(Office Scripts)でExcelのセル色を取得してみた。

officeスクリプトでは、下記のようにセル色を取得できます。

//セル色を取得する。
Sheetオブジェクト.Rangeオブジェクト.getFormat().getFill().getColor();

Officeスクリプト(Office Scripts) でセル色を判別するサンプルコード

下図のシートA1セルとA2セルのそれぞれのセル色をコンソールに出力してみます。

セル色判別テスト1
サンプル表
//例 A1セルのセル色を出力する。
function main(workbook: ExcelScript.Workbook) {
   let st = workbook.getActiveWorksheet();
   console.log(st.getRange("a1").getFormat().getFill().getColor());
   console.log(st.getRange("a2").getFormat().getFill().getColor());
}

上記のスクリプトを実行すると、

セル色取得サンプルコード実行結果

コードエディタ下部の「出力」タブにセル色が出力できました(‘ω’)

セル色はHTML16進数カラーコードで表示される。

セル色はHTML16進数カラーコードで表示される。

出力結果を見るとわかるようにWebで良く見るHTMLカラーコードで文字列で取得します。この例ですと、A2セルは何もセル色が設定されていないためデフォルトのセル色である白のカラーコードである「#FFFFFF」と表示されています。

また、セル色をスクリプトから設定する場合は、名前付きHTML色名(”red”など)も使用可能です。

officeスクリプト(Office Scripts)でセル色を判別サンプルコード2

じょじお

もう少し汎用性のあるケースを想定して、下図のような表を用意しました。

サンプル用のエクセル表プログラム実行前
スクリプト実行前

B列に、何やらセル色で区別してる表です。B列に色がついていたら、その隣のC列に判定結果を出力するスクリプトを作成しました。※人名はテストデータです。実在しません。

サンプル用のエクセル表プログラム実行後
スクリプト実行後
function main(workbook: ExcelScript.Workbook) {
  let st = workbook.getActiveWorksheet();
  let lastRowNum = st.getUsedRange().getLastRow().getRowIndex();
  let baseColor = "#FFFFFF"; //比較する色コード(白)
  let color: string ; //各セルの色コード一時保管用
  
  //B列を上から下にループする。
  for (let i = 0; i <= lastRowNum; i++) {

      //現在のセルのセル色を一時的に変数に入れる。
      color = st.getCell(i, 1).getFormat().getFill().getColor();
  
      //セル色が白かどうか比較する。
      if ( color != baseColor) {
        st.getCell(i, 2).setValue(color);
      }

  }
}

officeスクリプト(Office Scripts)でセル色を設定する方法

officeスクリプトでは、下記のようにセル色を設定・変更できます。

//セル色を取得する
Sheetオブジェクト.Rangeオブジェクト.getFormat().getFill().setColor("red");

テーブル化している場合はセル色を正しく取得できない。

じょじお

セル色を判別する場合、テーブル化している場合には注意が必要です。テーブルに含まれるセルはただしくセル色を取得できないからです。ためしに先程の表をテーブル化してみます。

テーブルスタイルで設定されたセル色は正しく取得できません!

STEP
テーブル化します。
セル色判別エクセル表テーブル化

▲テーブル化しました。テーブルスタイルはデフォルトの青系のデザインです。

STEP
スクリプトを実行します。
セル色判別エクセル表テーブル化実行後

▲この表で先程のスクリプトを実行してみます。

図ではわかりにくいですが、テーブルスタイルで水色になっているセルが色なし(白)と判定されています。テーブルスタイルで色はセル色として判定されません。このためセル色を判別するようなスクリプトを使う場合にはテーブルスタイルはセル色なしのものを使ったほうがいいかもしれませんね。

まとめ

  • セル色は.getColor();で取得する。
  • セル色は.setColor(“color”);で設定する。
  • セル色はHTML16進数カラーコードかHTMLカラー名で文字列で取得する。
  • テーブルスタイルで設定されたセル色は正しく取得できない。
じょじお

以上、Officeスクリプトを使ってセル色を判別するプログラムを作成してみた、でした。

ぽこがみさま

OfficeスクリプトはPower Automateから呼び出して真の実力を発揮するにゃ。Power Automateと連携を解説した下記の記事もよければよんでにゃー。

ノンプログラマーでも自動化スキルを身につける。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
目次
閉じる