セルの値の取得と書き込み
ここではオフィススクリプトを使って、特定のセルの値を取得する方法と、セルに値を書き込む方法をサンプルコードと併せて解説します。
対象のセルを取得する
Section titled “対象のセルを取得する”まずは値を読み書きするセルを取得します。
ExcelScript.WorksheetオブジェクトのgetRangeメソッドにB2のような A1 形式の番地を指定すると、そのセルを表すExcelScript.Rangeオブジェクトが返されます。
/** * @param address 範囲の番地(A1 形式) */ExcelScript.Worksheet.getRange(address?: string): Range;値を取得する
Section titled “値を取得する”利用するメソッド
Section titled “利用するメソッド”ExcelScript.Rangeオブジェクトに含まれている、getValueメソッドを使用します。
/** * @return セルの値(文字列・数値・真偽値のいずれか) */ExcelScript.Range.getValue(): string | number | boolean;数値が入力されたセルからは数値が、文字列が入力されたセルからは文字列が返されます。値が入力されていないセルからは空文字('')が、エラーになっているセルからは#DIV/0!のようなエラーの文字列が返されます。
サンプルコード
Section titled “サンプルコード”以下のシートのB2セルの値を取得するサンプルコードです。
| A | B | C | |
|---|---|---|---|
| 1 | 商品 | 単価 | 数量 |
| 2 | リンゴ | 120 | 3 |
| 3 | ミカン | 80 | 5 |
- Sheet1
B2getRange('B2') で取得するセル
function main(workbook: ExcelScript.Workbook) { /** 対象シート名 */ const sheetname = 'Sheet1'; /** 対象ワークシート */ const sheet = workbook.getWorksheet(sheetname);
if (!sheet) { throw `${sheetname}という名前のワークシートは存在しません`; }
/** B2 セルの値 */ const value = sheet.getRange('B2').getValue();
console.log(value); // 120}取得した値を計算に使う場合
Section titled “取得した値を計算に使う場合”getValueの返り値はstring | number | boolean型のため、そのままでは数値として計算できません。例えばvalue * 2と書くと、文字列や真偽値の可能性があるためエディター上でエラーになります。
計算に使う場合は、typeofで数値であることを確かめてから使います。確かめた後は、valueはnumber型として扱われます。
function main(workbook: ExcelScript.Workbook) { const sheet = workbook.getActiveWorksheet();
/** B2 セルの値 */ const value = sheet.getRange('B2').getValue();
if (typeof value !== 'number') { throw `B2セルの値が数値ではありません: ${value}`; }
console.log(value * 2); // 240}値を書き込む
Section titled “値を書き込む”利用するメソッド
Section titled “利用するメソッド”ExcelScript.Rangeオブジェクトに含まれている、setValueメソッドを使用します。
/** * @param value 書き込む値(文字列・数値・真偽値) */ExcelScript.Range.setValue(value: any): void;返り値はありません。引数に指定した値が、対象のセルに書き込まれます。
=で始まる文字列を指定すると、数式として扱われます。
サンプルコード
Section titled “サンプルコード”D1セルに見出しを書き込むサンプルコードです。
function main(workbook: ExcelScript.Workbook) { const sheet = workbook.getActiveWorksheet();
sheet.getRange('D1').setValue('確認状況');}複数のセルに同じ値を書き込む
Section titled “複数のセルに同じ値を書き込む”複数のセルを含む範囲に対してsetValueを実行すると、範囲内のすべてのセルに同じ値が書き込まれます。
以下のサンプルコードを実行すると、D2:D3の 2 つのセルに未確認が書き込まれます。
function main(workbook: ExcelScript.Workbook) { const sheet = workbook.getActiveWorksheet();
sheet.getRange('D1').setValue('確認状況'); sheet.getRange('D2:D3').setValue('未確認');}| A | B | C | D | |
|---|---|---|---|---|
| 1 | 商品 | 単価 | 数量 | 確認状況 |
| 2 | リンゴ | 120 | 3 | 未確認 |
| 3 | ミカン | 80 | 5 | 未確認 |
- Sheet1
サンプルコードを実行した後のシート
D1getRange('D1').setValue('確認状況')D2:D3getRange('D2:D3').setValue('未確認')
セルごとに異なる値を書き込む場合は、setValuesメソッドを使用します。