MENU
Power Automate
PR

【OfficeScripts】セルの基本操作〜値の取得・代入・フォーマット変更〜

ほし
記事内に商品プロモーションを含む場合があります

こんにちは、ほしです。

本日も、記事を読んでいただきありがとうございます。
こんにちは、今回はOfficeScriptでセルを操作する方法について紹介していきます。

本記事で学べることは以下のような内容になります。

  • セルの値を操作する
  • セルの書式設定
  • セル範囲の操作
  • 実践に使えるセル操作のサンプルコード

セルの値を操作する

セルの値を操作するといっても、セルの値を取り出したり設定する機能を紹介します。

セルの値を取得する

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // セルA1の値を取得
  const value = sheet.getRange("A1").getValue();
  console.log(value);
  
  // 複数セルの値を一度に取得
  const values = sheet.getRange("A1:B5").getValues();
  console.log(values);
}
Q
getValue()とgetValues()の違い
比較項目getValue()getValues()
基本機能単一のセルから値を取得セル範囲(複数セル)から値を取得
対象範囲単一セルのみ複数セルの範囲(例: “A1″)
戻り値の型プリミティブ型(string, number, booleanなど)2次元配列 any[][]
戻り値の例"テキスト"42 など単一の値[["A1の値", "B1の値"], ["A2の値", "B2の値"]] など2次元配列
後処理そのまま利用可能配列を操作するためにループが必要
使用ケース特定の1セルの値だけが必要な場合複数セルのデータを処理する場合
値の設定対応setValue()setValues()

セルに値を設定する

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // 単一セルに値を設定
  sheet.getRange("A1").setValue(100);
  
  // 複数のセルに同じ値を設定
  sheet.getRange("A2:A5").setValue("同じ値");
  
  // 複数のセルに異なる値を設定
  const values = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
  ];
  sheet.getRange("C1:E3").setValues(values);
}
Q
setValue()とsetValues()の違い
比較項目getValue()getValues()
基本機能単一のセルから値を取得セル範囲(複数セル)から値を取得
対象範囲単一セルのみ複数セルの範囲(例: “A1″)
戻り値の型プリミティブ型(string, number, booleanなど)2次元配列 any[][]
戻り値の例"テキスト"42 など単一の値[["A1の値", "B1の値"], ["A2の値", "B2の値"]] など2次元配列
後処理そのまま利用可能配列を操作するためにループが必要
使用ケース特定の1セルの値だけが必要な場合複数セルのデータを処理する場合
値の設定対応setValue()setValues()

もっと詳しく知りたいという方は、こちらの記事を参考にしてください

あわせて読みたい
【OfficeScripts】セルの基本操作 Range:セルの値を取得・代入
【OfficeScripts】セルの基本操作 Range:セルの値を取得・代入

セルの書式設定

セルの書式設定では、セルのフォントや背景色を設定することができます。

これを使えば、セルの値に応じて、書式を変更することなどができるようになります。

フォントの設定

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const range = sheet.getRange("A1:B5");
  
  // フォントサイズを変更
  range.getFormat().getFont().setSize(14);
  
  // フォントを太字に
  range.getFormat().getFont().setBold(true);
  
  // フォントの色を変更
  range.getFormat().getFont().setColor("#FF0000");
}

フォントの色を変更する際にカラーコードを設定する必要があります。

今回は「#FF0000」で赤色を設定しています。

以下を参考にするとよいと思います。

https://www.colordic.org/#google_vignette

背景色の設定

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // セルの背景色を設定
  sheet.getRange("A1:A5").getFormat().getFill().setColor("#FFFF00");
}

さらにセルのフォントの操作や背景の操作についてさらに詳しく知りたいという方は、こちらの記事を参照ください。

あわせて読みたい
【Office Scripts】セルのフォント・背景の操作
【Office Scripts】セルのフォント・背景の操作

セル範囲の操作

セルを操作する際には、単一のセルを操作する場合だけでなく複数セルを操作することも多いと思います。

複数のセルを効率的に操作する方法を解説します。

セル範囲の選択方法

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // 特定のセル範囲を選択
  const range1 = sheet.getRange("A1:C5");  
  
  // 使用されているセル範囲を選択
  const usedRange = sheet.getUsedRange(false);
  

}

・getRangeについて

引数には範囲のアドレスまたは名前を表す文字列。 たとえば、”A1:B2″ です。 指定されていない場合は、ワークシート全体の範囲が返されます。

R1C1形式での記載も可能ですが」、一般的ではないので

A1形式の「”A1:B2″」が良いでしょう。

引数address (”A1:B2″ など)
戻り値Rangeオブジェクト

・getUsedRangeについて

指定した範囲オブジェクトのうち使用されている範囲を返します。

使用されているセルがない場合、このメソッドは undefinedを返します。

値の設定されているセルのみを取得したい場合は、引数にtrueを設定してください。

引数boolean(true,false)
戻り値Rangeオブジェクト

OfficeScriptsで最終行や最終列を選択する方法は以下の記事で紹介しています。

あわせて読みたい
【OfficeScripts】 最終行と列の取得方法
【OfficeScripts】 最終行と列の取得方法

まだ読んだことない方は、是非参考にしてください。

セル範囲の操作

選択したセルの範囲に値を設定したり、削除したりする方法を説明してきます。

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // セル範囲をクリア
  sheet.getRange("A1:C5").clear();
  
  // セル範囲内の空白セルをチェック
  const values = sheet.getRange("A1:C5").getValues();
  for (let i = 0; i < values.length; i++) {
    for (let j = 0; j < values[i].length; j++) {
      if (values[i][j] === "") {
        console.log(`セル (${i+1}, ${j+1}) は空白です`);
      }
    }
  }
}

実践的なセル操作例

実際にセルの操作を用いた実際にありそうなケースを紹介します。

そのままコピペすることもできると思いますので、ぜひ利用してください。

あわせて読みたい
【PowerAutomate】Formsの回答をExcelに自動転記する方法「OfficeScripts編」
【PowerAutomate】Formsの回答をExcelに自動転記する方法「OfficeScripts編」
ABOUT ME
ほし
ほし
エンジニア
ほしコラム管理人のほしです。 20代のITエンジニアです。 PowerAutomateで業務効率化の方法を中心に紹介していきます! たまに日常生活についても記事にしていきます! ほしコラム - にほんブログ村
記事URLをコピーしました