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

スクリプトの実行とイベントハンドラ (5/5)

作成:2011-06-22 08:02
更新:2011-11-04 15:51

■メニューを作る

最後に、作成したスクリプトをより使いやすくするために、「メニュー」の作成についても触れておきましょう。

Googleドキュメントのスプレッドシートでは、メニューバーをスクリプトでカスタマイズすることができます。独自のメニューを追加し、そこからスクリプトを呼び出すように設定することが可能なのです。これを利用すれば、作ったスクリプトをいつでもメニューから実行できるようになり、かなり使いやすくなりますね。

メニューの追加は、Spreadsheetオブジェクトに用意されている「addMenu」メソッドを用いて行います。
《Spreadsheet》.addMenu( 配列 );
※配列の要素
{ name: メニュー項目の名前 , functionName: 呼び出す関数名 }

addMenuでは、追加するメニュー項目の情報を配列としてまとめたものを引数に用意します。配列に保管するのは、メニュー項目名と関数名の情報をまとめた連想配列です。これにより、用意されたメニュー項目を持つメニューが新たに追加されます。

実際の利用例として、簡単なサンプルを下のリスト欄に挙げておきましょう。ここではonOpenに、2つのメニュー項目を持つ「追加機能」というメニューを作成する処理を用意しておきました。メニューの作成は、このようにonOpenイベントハンドラを利用するのが一般的です。これにより、スプレッドシートを開くと自動的にメニューを追加させることができます。

ここでは、setNowとsetRangeTotalという2つの関数を定義し、これらを「現在日時の表示」「合計表示の設定」というメニュー項目で呼び出すようにしてあります。setNowは、アクティブなレンジに現在の日時を書き出すサンプルです。またsetRangTotalは、今回、最初に作成した「選択範囲の右側と下側に合計を表示させる」関数をそのまま移植したものです。実際にこれらのメニューを使って、スクリプトが正しく動くことを確認してみてください。


――今回、さまざまなスクリプトの利用について説明しましたが、この他にもまだGoogle Apps Scriptには機能がたくさん用意されています。Google Apps Scriptは、まだまだ発展途上の技術ですから、今後、更に新しいイベントハンドラなどが追加される可能性もあります。とりあえず今回紹介したのは「スクリプト利用の基本」と考えておくとよいでしょう。

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

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

●プログラム・リスト●

function onOpen(e){
	var arr = [
		{name: "現在日時の表示", functionName: "setNow"},
		{name: "合計表示の設定", functionName: "setRangTotal"}
	];
	var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
	spreadsheet.addMenu("追加機能", arr);
}

function setNow(){
	var range = SpreadsheetApp.getActiveRange();
	range.setValue(new Date());
}

function setRangTotal(){
	var range = SpreadsheetApp.getActiveRange();
	var sheet = SpreadsheetApp.getActiveSheet();
	var r = range.getNumRows();
	var c = range.getNumColumns();
	var x = range.getRow();
	var y = range.getColumn();
	for(var i = x;i < (x + r);i++){
		sheet.getRange(i,y + c).setFormulaR1C1
			('=SUM(R'+i+'C'+y+':R'+i+'C'+(y+c-1)+')');
	}
	for(var i = y;i < (y + c);i++){
		sheet.getRange(x + r,i).setFormulaR1C1
			('=SUM(R'+x+'C'+i+':R'+(x+r-1)+'C'+i+')');
	}
}

※関連コンテンツ

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