Google Apps Scriptのキホンと使い方 (4/4)
2014年03月12日 11時00分更新
オリジナルのメニューを作成しよう!
実際に使ってみると、「スクリプトマネージャ…」メニューを選んで、現れたダイアログから関数を選んで……というのは面倒ですね。そこで、スプレッドシートにオリジナルのメニューを追加して、すぐに関数を呼び出せるようにしてみましょう。こういったカスタマイズもスクリプトエディタで関数として作成できます。先ほどコード.gsに書いた関数の後に改行を入れて、以下を追記してください。
function onOpen(event){
var menuitems = [
{name:'16進数を整数に変換...', functionName:'HexToInt'},
{name:'整数を16進数に変換...', functionName:'IntToHex'}
];
var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.addMenu('★', menuitems);
}
記述したら、一度スクリプトエディタとスプレッドシートを閉じてください(変更はすべて自動保存されますので保存操作は不要です)。その後、Googleドライブからあらためてスプレッドシートを開くと、「ヘルプ」メニューの右側に、「★」メニューが追加されています。
★メニューには、「16進数を整数に変換…」と「整数を16進数に変換…」という2つのメニュー項目が表示されますので、作成した2つの関数をいつでも実行できます。
onOpenイベントによる処理
今回は、「イベントトリガー」と呼ばれる機能を利用しています。GASでは、関連するGoogleのサービスでの操作に応じて発生するイベントを受け取って処理できます。このイベントによって呼び出される関数を設定したものが「イベントトリガー」(単に「トリガー」ともいいます)です。
onOpenは、ドキュメントを開いた際に発生するイベントによって実行されるようにデフォルトでトリガー設定されている関数です。この関数を用意するだけで、ドキュメントが開かれた時に自動的に処理を実行できます。
スプレッドシートのメニューへの組み込み
onOpenで実行しているのは、現在開かれているスプレッドシートのオブジェクトにメニューを組み込む処理です。順を追って処理の内容を説明しましょう。
var 変数 = SpreadsheetApp.getActiveSpreadsheet();
GASでは、Googleのさまざまなサービスごとに用意されているオブジェクトが使えます。スプレッドシート用の機能にアクセスするときに使うのが「SpreadsheetApp」オブジェクトです。
getActiveSpreadsheetメソッドは、現在開かれているスプレッドシートを「Spreadsheet」オブジェクトとして取得するためのメソッドです。Spreadsheetオブジェクトにある機能を利用することで、開いているスプレッドシートを操作できます。
「addMenu」はSpreadsheetオブジェクトに用意されている、スプレッドシートにメニューを追加するメソッドです。
《Spreadsheet》.addMenu( タイトル , メニュー項目 );
第1引数には、メニューバーに表示するメニューのタイトルを指定します。第2引数に、メニューに組み込まれるメニュー項目を指定します。メニュー項目は、設定情報をまとめた配列で、以下のように記述します。
[
{name: タイトル , functionName: 関数名 },
……必要なだけオブジェクトを用意……
];
各メニュー項目には、nameとfunctionNameという2つの値を設定します。メニュー項目のタイトル(メニュー項目に表示されるテキスト)と、メニューを選んだ時に実行する関数名をそれぞれテキストで指定します。例えば、{name:'16進数を整数に変換...', functionName:'HexToInt'}は、「16進数を整数に変換…」というメニュー項目を作成し、選んだときにHexToInt関数を実行する、という意味です。
配列の内容を書き換えれば、メニュー項目を変更できます。もちろん、自分で作った関数をメニューに登録して簡単に呼び出せます。実際に自分で簡単な関数を作成し、メニューに登録して動かしてみましょう。たったこれだけでも、「GASって便利だ!」と実感できるはずです。
◆
次回は、Googleスプレッドシートのさまざまな機能をスクリプトで操作し、「スプレッドシートのマクロ」として役立てる方法を紹介します。