ラベル 101.【使えるパーツ】メニュー(1)1項目のメニューからスクリプト実行 の投稿を表示しています。 すべての投稿を表示
ラベル 101.【使えるパーツ】メニュー(1)1項目のメニューからスクリプト実行 の投稿を表示しています。 すべての投稿を表示

2011年7月19日火曜日

【使えるパーツ】メニュー(1)1項目のメニューからスクリプト実行

スクリプトエディタからスクリプトを実行した場合、実行結果はスクリプトエディタの画面ではなく、スプレッドシートの画面に表示されます。したがって、スクリプトを何度も実行するような場合は、両方の画面を行ったり来たりすることになり、結構面倒です。そこで、ここではスプレッドシートの画面からスクリプトを実行できる方法をご紹介します。


スプレッドシートの画面からスクリプトを実行する一番簡単な方法は、スプレッドシート上のメニューから実行できるようにする方法です。

まず、スプレッドシートを新規作成してから、スクリプトエディタを起動し、以下のスクリプトを記述します。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "実行", functionName: "myFunction"}];
  ss.addMenu("拡張", menuEntries);
}
function myFunction() {
  Browser.msgBox("Hello, World!");
}

このスクリプトを保存し、スクリプトエディタも閉じます。


更に、スプレッドシートも保存し、スプレッドシートの画面も閉じます。


一旦閉じたスプレッドシートを開くと「拡張」メニューが追加されます。
【注意】追加したメニューが実際に表示されるまで若干の間があるのですが、それは大目に見てあげましょう。


「拡張」メニューから「実行」を選択すればメッセージボックスが表示されます。



このスクリプトのポイントは、プレッドシートを開いた時に呼ばれるonOpen関数 です。この名前で関数を作っておけば、スプレッドシートが開いた時に自動的に実行される仕組みになっています。そのonOpen関数の中でメニュー用の配列を作成し、現在開いているスプレッドシートに対してaddMenuメソッドを使ってメニューを追加します。メニューが選択されるとmyFunction関数が呼ばれ、メッセージボックスが表示されます。

【参考にしたサイト】
Google Code > Tutorial: Defining Spreadsheet Menus
http://code.google.com/intl/ja/googleapps/appsscript/articles/defining_menus.html