カテゴリ: Office Scripts 更新日: 2026/02/05

Office Scriptsでセルの値を安全に扱う!読み取り・書き込みのベストプラクティスをやさしく解説

値読み取り・書き込みのベストプラクティス
値読み取り・書き込みのベストプラクティス

先生と生徒の会話形式で理解しよう

生徒

「Office Scriptsでセルの値を読み取ったり書き込んだりしたいんですが、やり方を間違えると壊れたりしませんか?」

先生

「大丈夫です。ただし、正しい書き方と考え方を知っておくと、トラブルを防げます。」

生徒

「Excelは毎日使ってますが、プログラムで値を扱うのは初めてで不安です。」

先生

「Excelの操作をそのまま文章にしたイメージで考えれば大丈夫です。セルの値読み取りと書き込みの基本から順番に見ていきましょう。」

1. Office Scriptsとは?

1. Office Scriptsとは?
1. Office Scriptsとは?

Office Scriptsは、Excel Onlineで使える自動化スクリプトです。Excelの「自動化」タブからスクリプトを実行でき、セルの値の変更、シートの作成、表(テーブル)の追加など、多くの作業を自動で行えます。プログラムが初めての人でも、身近なExcelの操作をコードに置き換えるだけで便利な処理が書けるようになります。

これまでExcelの自動化といえば「VBA(マクロ)」が主流でしたが、Office Scriptsはクラウド時代の新しいツールです。Webブラウザ上で動作するため、インストール作業も不要ですし、何よりMicrosoft Power Automateというツールと連携して、毎日決まった時間に実行したり、メールが届いたらExcelを更新したりといった、高度な連携が非常に得意なのが特徴です。

2. セルへの書き込みと読み取りの基本

2. セルへの書き込みと読み取りの基本
2. セルへの書き込みと読み取りの基本

Excel操作の基本中の基本は、セルに値を書き込むこと、そしてセルにある値を読み取ることです。これを「入出力」と呼びます。Office Scriptsでは、まず「どのシートの」「どのセルか」を指定する必要があります。これを住所を特定する作業だと思ってください。

プログラムの世界では、値を入れる箱のことを「変数(へんすう)」と呼びます。例えば、セルA1の内容を読み取って、一度「箱(変数)」に入れ、それを別のセルに書き込むという流れが一般的です。まずは、最もシンプルな「セルに文字を書く」コードを見てみましょう。


function main(workbook: ExcelScript.Workbook) {
  // 現在開いているシートを取得します
  const sheet = workbook.getActiveWorksheet();
  
  // A1セルに「こんにちは、Office Scripts!」という文字を書き込みます
  sheet.getRange("A1").setValue("こんにちは、Office Scripts!");
}

上記のコードを実行すると、アクティブなシート(今開いているシート)のA1セルに文字が表示されます。setValueという命令が「値をセットする(書き込む)」という意味です。非常に直感的で分かりやすいですね。

3. ベストプラクティス:読み書きの回数を減らそう

3. ベストプラクティス:読み書きの回数を減らそう
3. ベストプラクティス:読み書きの回数を減らそう

ここで非常に大切な「ベストプラクティス(最も効率的で良いとされるやり方)」を紹介します。Office ScriptsはWebを通じてExcelを操作するため、1セルずつ何度も読み書きを繰り返すと、通信に時間がかかってしまい、処理が重くなってしまいます。

例えば、100個のセルに順番に書き込むとき、100回命令を出すのではなく、「100個分のデータをまとめて一気に書き込む」のが正解です。これは、買い物に何度も行くのではなく、メモをまとめて一度にスーパーで買ってくるのと似ています。この「まとめ書き」には、setValues(最後にsが付く)という命令を使います。

具体的には、「二次元配列(にじげんはいれつ)」という形式でデータを準備します。二次元配列とは、行と列をイメージしたデータの並びのことです。プログラムが初めての方には少し難しく感じるかもしれませんが、「Excelの表をそのままプログラム用の形式にしたもの」と考えてください。

4. まとめて値を読み取る方法(getValues)

4. まとめて値を読み取る方法(getValues)
4. まとめて値を読み取る方法(getValues)

次に、複数のセルの値を一気に読み取る方法を解説します。先ほどの書き込みとは逆に、getValuesを使います。これを使うと、指定した範囲のデータを丸ごと取得できます。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // A1からB2までの範囲の値をまとめて取得します
  const range = sheet.getRange("A1:B2");
  const values = range.getValues();
  
  // 取得した値をコンソール(ログ画面)に表示してみます
  console.log(values);
}

実行結果は以下のようになります(A1に「名前」、B1に「得点」が入っている場合)。


[
  ["名前", "得点"],
  ["田中", 85]
]

このように、データが大きな塊として取得されます。この塊の中から、特定のデータを取り出して計算に使うことができます。1回ずつセルにアクセスするよりも、このようにドバっと取得するほうが、圧倒的に処理スピードが速くなります。これを意識するだけで、プロ級のスクリプトになります。

5. 取得した値を使って計算してみよう

5. 取得した値を使って計算してみよう
5. 取得した値を使って計算してみよう

Excelの醍醐味といえば計算です。Office Scripts上でも、取得した数値を使って計算を行うことができます。例えば、セルA1とA2にある数字を足して、A3にその合計を書き込むという処理を考えてみましょう。

プログラムで計算を行う場合、注意が必要なのが「データの型(かた)」です。Excelのセルには文字も数字も入りますが、プログラムは「これは数字だよ」「これは文字だよ」と厳格に区別します。数字として計算したい場合は、必ず数値として扱うようにします。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  
  // A1とA2の値を数値として取得します
  const val1 = sheet.getRange("A1").getValue() as number;
  const val2 = sheet.getRange("A2").getValue() as number;
  
  // 足し算をします
  const sum = val1 + val2;
  
  // 結果をA3に書き込みます
  sheet.getRange("A3").setValue(sum);
  
  // 背景色を変えて「計算したよ!」と分かりやすくしてみます
  sheet.getRange("A3").getFormat().getFill().setColor("yellow");
}

このコードでは、as numberという記述を使って「これは数値として扱うよ」とパソコンに教えています。これを忘れると、時々エラーになったり、文字として繋がってしまったりすることがあります(例えば、1+1が11になってしまうような現象です)。

6. 範囲の指定方法:アドレスとインデックス

6. 範囲の指定方法:アドレスとインデックス
6. 範囲の指定方法:アドレスとインデックス

これまでは getRange("A1") のように、Excelでおなじみの記号(アドレス)を使ってセルを指定してきました。しかし、大量のデータを扱うループ処理(繰り返し作業)を行うときは、数字で場所を指定したほうが便利な場合があります。

Office Scriptsでは、getCell(行番号, 列番号) という命令も使えます。ここで重要なポイントが一つあります。プログラミングの世界では、数は「0」から数え始めるというルールです。つまり、1行目は「0」、A列は「0」になります。A1セルを指定したい場合は、getCell(0, 0) と書きます。B2セルなら getCell(1, 1) です。最初は戸惑うかもしれませんが、慣れると「次の列は+1すればいいんだな」と計算で場所を動かせるので、非常に便利です。

7. 条件によって処理を変える(もし~なら)

7. 条件によって処理を変える(もし~なら)
7. 条件によって処理を変える(もし~なら)

自動化をより賢くするために、「もしセルの値が100以上なら赤色にする」といった条件分岐を作ってみましょう。これには if(イフ)という構文を使います。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const cell = sheet.getRange("B2");
  const score = cell.getValue() as number;
  
  // もしスコアが80点以上なら
  if (score >= 80) {
    // 文字を太字にして青色にします
    cell.getFormat().getFont().setBold(true);
    cell.getFormat().getFont().setColor("blue");
  } else {
    // そうでなければ赤色にします
    cell.getFormat().getFont().setColor("red");
  }
}

このように条件を組み合わせることで、ただデータを入力するだけでなく、データのチェックや見た目の整理も自動化できます。人間がいちいち目で見て判断して色を変える手間がなくなるわけです。これは事務作業のミスを減らすためにも非常に役立ちます。

8. 複数の行を繰り返し処理する

8. 複数の行を繰り返し処理する
8. 複数の行を繰り返し処理する

最後に、たくさんの行に対して同じ処理を繰り返す「ループ処理」を紹介します。これができるようになると、一瞬で数百行のデータを処理できるようになります。forEachfor 文というものを使いますが、ここでは初心者の方にもイメージしやすい「一気に読み取って、一気に書き換える」ベストプラクティスに基づいた例を出します。


function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  // A1からA5までのデータを取得
  const range = sheet.getRange("A1:A5");
  const values = range.getValues();

  // 各行のデータに対して「様」を付け加える処理
  for (let i = 0; i < values.length; i++) {
    // values[i][0] は i行目の1列目という意味です
    values[i][0] = values[i][0] + " 様";
  }

  // 最後にまとめてシートに書き戻す
  range.setValues(values);
}

このコードの流れは、①シートから値を全部抜き取る、②プログラムの中で「様」を付ける加工をする、③加工が終わったデータをシートに戻す、という3ステップです。シートとのやり取りが最初と最後の2回だけで済むため、非常に効率が良い書き方になります。これがOffice Scriptsを使いこなすための第一歩です。

Excel Onlineの自動化は、最初は難しく感じるかもしれませんが、一つ一つの命令はとてもシンプルです。「セルの値を取る」「計算する」「セルに戻す」。この基本の組み合わせで、どんな複雑な業務も自動化できるようになります。まずは1つのセルを操作することから始めて、徐々に範囲を広げていきましょう。Office Scriptsを使えば、あなたの仕事の効率は劇的に向上するはずです。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法
New2
Office Scripts
Office Scripts普及の歴史とMicrosoftの方向性!Excel自動化が進化してきた流れをやさしく解説
New3
Excel VBA
Excel VBA関数を用途別に作成!計算・文字列処理の基本を初心者向けに解説
New4
Office Scripts
Office Scriptsで条件付き書式を自動化!数値変化に応じてExcelの書式を自動更新する方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excelマクロのセキュリティ設定の基本!安全に実行するための信頼センター設定まとめ
No.2
Java&Spring記事人気No2
Office Scripts
Office Scriptsでできること・できないことを完全整理!Excel自動化の基本と限界をやさしく解説
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAとOffice Scriptsの違いを比較!初心者でもわかる学ぶべきスキル
No.4
Java&Spring記事人気No4
Excel VBA
目的別にモジュールを分割する方法!処理単位で整理して見やすくするテクニック
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBA基本文法の総まとめ!初心者が必ず押さえるべき20の基礎ポイント完全ガイド
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsで条件付き書式を自動化!Excel自動化初心者向けスクリプト操作の基本
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsで日付判定!Excel条件付き書式を自動化して期限管理をラクにする方法