libro
www.tuyano.com
初心者のためのGoogle Apps Scriptプログラミング入門

スプレッドシート利用の基本 (5/5)

作成:2011-06-17 08:19
更新:2011-11-04 15:34

■フォーマットとフォーミュラ(式)

セルには、表示の色やフォントといったプロパティだけでなく、もっと重要な情報も保管されています。それは「フォーマット」と「フォーミュラ」です。

フォーマットは、数字の表示形式を指定するためのものです。3桁ごとのカンマ表示、小数点以下何桁で丸めるか、そうしたことをフォーマットとして設定します。これはスプレッドシートの<表示形式><数字>メニューにサブメニューとして用意されている項目をイメージすればよいでしょう。

フォーミュラは、セルに設定される計算式のことです。各セルでは、数値だけでなく、「=○○」というようにイコール記号で始まる式を書くことで、その式の計算結果を表示させることができます。これがフォーミュラです。

この他、セルの表示を整えるのに用いられる「枠線(ボーダー)」も重要でしょう。枠線を使って表などを作成したりしますから、これをスクリプトから設定できると、ぐんとスクリプトの汎用性も高まります。これらについて用意されているメソッドも整理しておきましょう。

○フォーマットの取得
変数 = 《Range》.getNumberFormat();
変数 = 《Range》.getNumberFormats();

○フォーマットの変更
《Range》.setNumberFormat( 値 );
《Range》.setNumberFormats( 値 );
これらのものも、先ほどの色やフォントと同様、単数形と複数形のメソッドが用意されています。numberFormatプロパティを操作するためのもので、フォーマットを示すテキストが値として扱われます。

○フォーミュラの取得
変数 = 《Range》.getFormula();
変数 = 《Range》.getFormulas();

○フォーミュラの変更
《Range》.setFormula( 値 );
《Range》.setFormulas( 値 );
フォーミュラ(formulaプロパティ、式のこと)を扱うためのメソッドです。セルに設定された計算式や関数などのテキストが値として扱われます。

○R1C1型フォーミュラの取得
変数 = 《Range》.getFormulaR1C1();
変数 = 《Range》.getFormulasR1C1();

○R1C1型フォーミュラの変更
《Range》.setFormulaR1C1( 値 );
《Range》.setFormulasR1C1( 値 );
フォーミュラを扱うためのメソッドですが、セルの指定をR1C1形式にした値になります。これは、例えば「A1」ならば「R[1]C[1]」といった形のテキストになります。

○枠線(ボーダー)の設定
《Range》.setBorder( 上, 左, 下, 右, 垂直, 水平 );
セルの周囲に表示する枠線の設定です。四方と垂直方向、水平方向について、それぞれ真偽値で枠線を表示するかどうかを指定します。

実際の利用例を下のリスト欄にあげておきましょう。B2~B6の合計をB7に、平均をB8に書きだすサンプルです。まず、getRnd関数を呼び出して、乱数の配列を用意し、range.setValuesで指定した範囲のセルに値を設定します。そしてその下のセルに、"=SUM(B2:B6)"という式を、更にその下に"=B7 / 5"という式をsetFormulaで指定します。

合計と平均のセルには、setNumberFormatでフォーマットを指定し、小数点以下2桁まで表示するようにしておきます。またsetBorderを使い、2つのセルにアンダーラインを表示させています。


――このあたりまでくると、スプレッドシートのセルについては、かなり自由にスクリプトで操作できるようになってきたことでしょう。少しずつ実用的なスクリプトも書けるようになってきたはずですよ。
(by. SYODA-Tuyano.)

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※関数と数値フォーマットの例
function myFunction(){
	var sheet = SpreadsheetApp.getActiveSheet();
	var arr = [[getRnd()],[getRnd()],[getRnd()],[getRnd()],[getRnd()]];
	var range = sheet.getRange(2,2,5,1);
	range.setValues(arr);
	var total = sheet.getRange(7,2)
	total.setFormula("=SUM(B2:B6)");
	total.setNumberFormat("#,###.00");
	var ave = sheet.getRange(8,2)
	ave.setFormula("=B7 / 5");
	ave.setNumberFormat("#,###.00");
	ave.setBorder(true,false,true,false,false,false);
}

function getRnd(){
	return Math.round(Math.random() * 100);
}

※関連コンテンツ

「初心者のためのGoogle Apps Scriptプログラミング入門」に戻る