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メソッドを使います。以下に具体的な手順を示します。
- スクリプトエディタを開く
スプレッドシートを開き、メニューから「拡張機能」→「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。 - 関数を作成する
エディタに以下のコードを入力します。function getSingleValue() {
var sheet = SpreadsheetApp.getActiveSheet();
var value = sheet.getRange('A1').getValue();
Logger.log(value);
}
このコードは、アクティブなシートのセルA1の値を取得し、ログに出力します。 - 関数を実行する
ツールバーの「実行」ボタンをクリックして、getSingleValue関数を実行します。初回は権限の確認が表示されるので許可します。 - ログを確認する
メニューから「表示」→「ログ」を開き、出力された値を確認します。Logger.logで記録した内容が表示されます。
この手順で、任意の単一セルの値を取得できます。セルの指定はgetRange(‘A1’)の部分を変えるだけです。数値や文字列など、セルのデータ型に応じた値が返ります。
getValuesで複数セルの値を取得する手順
複数のセルを一度に取得するには、getValuesメソッドを使います。戻り値は二次元配列です。以下に手順を示します。
- 範囲を指定する
例えば、A1からC3の範囲を取得する場合、getRange('A1:C3')と指定します。 - 関数を作成する
以下のコードをスクリプトエディタに入力します。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]);
}
}
}
このコードは、範囲内のすべてのセル値を二次元配列で取得し、各行・各列の値をログに出力します。 - 関数を実行する
getMultipleValues関数を実行します。初回は権限承認が必要です。 - ログを確認する
ログに各セルの値が行・列ごとに表示されます。配列のインデックスは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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
