ADVERTISEMENT

【Googleスプレッドシート】Apps Scriptでセル値を取得!getValue・getValuesの使い方

【Googleスプレッドシート】Apps Scriptでセル値を取得!getValue・getValuesの使い方
🛡️ 超解決

Googleスプレッドシートでセルデータを自動処理したいと考えたことはありませんか。手作業で大量のデータをコピーするのは手間がかかります。Apps Scriptを使えば、プログラムでセル値を簡単に取得できます。この記事では、getValueとgetValuesという基本的な関数の使い方を詳しく解説します。初心者の方でも理解できるよう、具体例を交えて説明します。

【要点】getValue・getValuesでセル値を取得する方法

  • getValue(): 単一のセルの値を1つだけ取得します。戻り値は数値、文字列、日付などセルの型に応じたデータ型で返ります。
  • getValues(): 複数セル範囲の値を二次元配列で取得します。行と列の構造を保ったままデータを扱えます。
  • 取得前の注意: スクリプトを実行する前に、対象のシートを正しく指定する必要があります。シート名やIDで範囲を決定します。

ADVERTISEMENT

Apps Scriptでセル値を取得するための基本知識

Apps ScriptはGoogleスプレッドシートを拡張するためのスクリプト言語です。JavaScriptベースで、スプレッドシート上のデータをプログラムで操作できます。セル値を取得するには、まずスクリプトエディタを開く必要があります。メニューの「拡張機能」→「Apps Script」から開けます。スクリプトエディタでは、関数を定義して実行します。getValueとgetValuesは、スプレッドシートオブジェクトのメソッドです。これらのメソッドを使う前に、アクティブなスプレッドシートや特定のシートを取得します。

また、セル範囲を指定するにはRangeオブジェクトが必要です。Rangeはシート内の特定のセルや範囲を表します。例えば、シートのA1セルを取得するには、sheet.getRange('A1')と記述します。このようにしてRangeを取得すれば、getValueやgetValuesを呼び出せます。注意点として、getValuesで取得した二次元配列は、外側の配列が行、内側の配列が列に対応します。つまり、配列[row][column]の形でアクセスします。

getValueで単一セルの値を取得する手順

単一のセルから値を取得するには、getValueメソッドを使います。以下に具体的な手順を示します。

  1. スクリプトエディタを開く
    スプレッドシートを開き、メニューから「拡張機能」→「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。
  2. 関数を作成する
    エディタに以下のコードを入力します。
    function getSingleValue() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var value = sheet.getRange('A1').getValue();
    Logger.log(value);
    }

    このコードは、アクティブなシートのセルA1の値を取得し、ログに出力します。
  3. 関数を実行する
    ツールバーの「実行」ボタンをクリックして、getSingleValue関数を実行します。初回は権限の確認が表示されるので許可します。
  4. ログを確認する
    メニューから「表示」→「ログ」を開き、出力された値を確認します。Logger.logで記録した内容が表示されます。

この手順で、任意の単一セルの値を取得できます。セルの指定はgetRange(‘A1’)の部分を変えるだけです。数値や文字列など、セルのデータ型に応じた値が返ります。

getValuesで複数セルの値を取得する手順

複数のセルを一度に取得するには、getValuesメソッドを使います。戻り値は二次元配列です。以下に手順を示します。

  1. 範囲を指定する
    例えば、A1からC3の範囲を取得する場合、getRange('A1:C3')と指定します。
  2. 関数を作成する
    以下のコードをスクリプトエディタに入力します。
    function getMultipleValues() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getRange('A1:C3');
    var values = range.getValues();
    for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
    Logger.log('Row ' + (i+1) + ', Col ' + (j+1) + ': ' + values[i][j]);
    }
    }
    }

    このコードは、範囲内のすべてのセル値を二次元配列で取得し、各行・各列の値をログに出力します。
  3. 関数を実行する
    getMultipleValues関数を実行します。初回は権限承認が必要です。
  4. ログを確認する
    ログに各セルの値が行・列ごとに表示されます。配列のインデックスは0から始まることに注意してください。

getValuesを使うと、大量のデータを効率的に取得できます。ループ処理と組み合わせることで、データの分析や加工が容易になります。

ADVERTISEMENT

getValueとgetValuesの違いと注意点

getValueとgetValuesにはいくつかの違いがあります。以下に比較表と注意点をまとめます。

項目 getValue getValues
取得セル数 1セルのみ 複数セル(範囲指定)
戻り値の型 単一の値(数値、文字列など) 二次元配列(Object[][])
実行速度 高速(単一セルのため) やや遅いが、多数のセルを一括取得する場合は効率的
使いどころ 特定のセル値を参照したい場合 表データ全体を処理したい場合

注意点:空のセルの扱い

空のセルに対してgetValueを実行すると、空文字列(“”)またはnullが返ります。getValuesの場合も、空のセルは空文字列またはnullとして配列に格納されます。そのため、空セルを判定する際には厳密な比較が必要です。

注意点:日付や書式設定

日付が入力されたセルの値を取得すると、Dateオブジェクトとして返ります。数値や文字列もそのままの型で返るため、必要に応じて型変換を行ってください。また、表示形式は無視され、実際の値が取得されます。

注意点:パフォーマンスの向上

多数のセルをループで1つずつgetValueすると処理が遅くなります。その場合は、範囲を指定してgetValuesで一括取得し、配列をループ処理するほうが効率的です。また、書き込みも同様にsetValuesで一括処理することをおすすめします。

まとめ

この記事では、Apps ScriptのgetValueとgetValuesを使ってセル値を取得する方法を解説しました。単一セルにはgetValue、複数セルにはgetValuesを使い分けることで、効率的にデータを扱えます。これらの関数は、スクリプトによる自動化の基本です。次は、取得した値を別のシートに書き込むsetValueやsetValuesにも挑戦してみてください。さらに、条件分岐やループを組み合わせれば、複雑なデータ処理も可能になります。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。