Googleが提供するGoogle Apps Script(GAS)のプログラミングで、Google Apps(主にスプレッドシート)を操作する方法を解説していく連載。今回は、スプレッドシートのオブジェクトを整理し、セル操作に関する基本的なメソッドの使い方を紹介する。
本連載「Excel VBAプログラマーのためのGoogle Apps Script入門」では、Googleが提供する「Google Apps Script」(GAS)のプログラミングで、「Google Apps」を操作する方法を「Google Sheets」(スプレッドシート)を中心に解説していく。
初回の「Google Apps Scriptプログラミングでスプレッドシートを操作するための基礎知識」では、Google Apps Scriptやスプリプトエディタの概要、スプレッドシートを表示し、Browser.msgBoxメソッドでメッセージを表示する手順などについて解説した。
今回から、Google Apps Scriptのスプレッドシート用のオブジェクトやメソッドの使い方を詳しく見ていく。まずは、スプレッドシートのセルの値、行数や列数を取得したり、セルに値を入力したりするなど、基本操作の仕方を解説する。
Google Apps Scriptでは、Google Sheets(スプレッドシート)は「SpreadsheetApp」オブジェクトとして用意されていて、下記のように複数のオブジェクトで構成されている。
Excel VBAでは、それぞれ、Application、Workbook、Worksheet、Rangeオブジェクトが同様のものといっていいだろう。
JavaScriptの「オブジェクト」について知りたい方は、下記記事を参照してほしい。
まず、選択されたシートを取得するコードの書き方は下記のようになる。
var sheet=SpreadsheetApp.getActiveSheet();
ここではSheetオブジェクトを変数「sheet」に格納している。
JavaScriptの「変数」について知りたい方は、下記記事を参照してほしい。
sheetは、以降の説明で使用する。
次に、Rangeオブジェクトを取得してみよう。
var range=sheet.getRange("{セルの番地}")
var range=sheet.getRange("{セルの番地(始まり)}:{セルの番地(終わり)}")
var range=sheet.getRange({行番号},{列番号})
var range=sheet.getRange({行番号},{列番号},{行数})
var range=sheet.getRange({行番号},{列番号},{行数},{列数})
{セルの番地}には、Excel同様「A1」「B1」「C3」などというふうに、列を表すアルファベットと行を表す数値を組み合わせて使う。{セルの番地(始まり)}:{セルの番地(終わり)}は例えば「A1:B1」と指定することで複数のセルを指定することができる。
{行番号}{列番号}で指定する方法は、Excelの「R1C1参照形式」と同じだ。なおExcel VBAでは「Cells」というプロパティで「R1C1参照形式」を使うが、Google Apps ScriptではgetRangeメソッドのみで、「A1形式」「R1C1参照形式」どちらでも使える。
さらに、Google Apps Scriptでは{行数}や{列数}をオプションで指定できる。例えば、下記のコードのようにすると、A1〜C3の3×3で9つのセルの値を取得することになる。{行数}や{列数}は省略した場合はデフォルトで「1」が指定される。
var range=sheet.getRange(1,1,3,3);
セルの値を取得してみよう。
var {戻り値}=range.getValue();
図1のような表で、氏名を入力したとしよう。
スクリプトエディタを開き、リスト1のコードを入力する。
function mygetValueFunction() { var sheet=SpreadsheetApp.getActiveSheet(); var value=sheet.getRange("A2:A10").getValue(); Browser.msgBox(value); }
実行すると、最初の値だけを取り出している(図2)。
次に、指定したセル全ての値を取得してみよう。
var {戻り値}={Rangeオブジェクト}.getValues();
先ほどとは違い、getValueではなくgetValuesと複数形になっている。ここで{戻り値}には配列が格納されることになる。
JavaScriptの「配列」について知りたい方は、下記記事を参照してほしい。
リスト1の「getValue()」を「getValues()」に変更して実行すると、図3のように表示される。
Copyright © ITmedia, Inc. All Rights Reserved.