2012年6月18日月曜日

スプレッドシートから独自メニューを削除する

スプレッドシートに追加された独自メニューを削除する場合は、Spreadsheet クラスの
removeMenu メソッドを用いる。
  
  
【構文】
SpreadsheetObject.removeMenu(menuName)
  
menuName : String 型。削除したい独自メニューの表題を指定する。
  
  
スプレッドシートに独自のメニューを追加する』の項で追加した「独自メニュー」メニューを
削除するサンプルコードを以下に記す :
  
  
【例】

function RemoveMenu() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  objSpreadsheet.removeMenu("独自メニュー");
}

スプレッドシートに独自のメニューを追加する

スプレッドシートに独自のメニューを追加するには、Spreadsheet クラスの addMenu
メソッドを使用する。新たに追加されるメニューは「ヘルプ」メニューの右側に追加される。
  
  
【構文】
SpreadsheetObject.addMenu(menuName, menuEntries)
  
menuName : String 型。メニューの表題を指定する。
menuEntriesObject 型。拡張引数。詳細は下記の通り。null を指定した場合は区切り
                     線が挿入される。
  
- menuEntries に指定する引数 - 
nameString 型。メニューの名前を指定する。
functionNameString 型。実行する関数名を指定する。
  
  
【構文】

function AddMenu() {
  var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var objMenuEntries = [{name: "実行1", functionName: "myFunction1"},
                                  {name: "実行2", functionName: "myFunction2"},
                                  null,
                                  {name: "実行3", functionName: "myFunction3"}];
   objSpreadsheet .addMenu("独自メニュー",  objMenuEntries);
}

function myFunction1() {
  <省略>
}


function myFunction2() {
  <省略>
}

function myFunction3() {
  <省略>
}
  
  
上記関数 AddMenu を実行した結果、下図の通り、「ヘルプ」メニューの右隣に「独自
メニュー」が追加される :
  

ログへの書き込み

デバッグのときに処理結果やエラーの内容等のメッセージをログへ書き込みたい場合は
Logger クラスの log メソッドを用いる。
  
  
【構文】
Logger.log(message)
  
message : String 型。メッセージを指定。
  
  
【例】
function WriteLog() {
  Logger.log("メッセージを書き込みます。");
  Logger.log("メッセージは、ちゃんと表示されましたか?");
  Logger.log("はい。メッセージは、ちゃんと表示されています。");
}
  
  
実行結果は下記の通り :
  
  
  
なお、ログを表示する為には、スクリプトエディターのメニューの「表示」→「ログ」を選択
すると上の図の画面が表示される。

メッセージボックスにメッセージを表示する

メッセージボックスにメッセージを表示する為には、Browser クラスの msgBox メソッド使用
する。


【構文】
Browser.msgBox(prompt)
Browser.msgBox(prompt, buttons)
Browser.msgBox(title, prompt, buttons)


title : String 型。メッセージボックスの見出しを指定する。
prompt : String 型。表示するメッセージを指定する
buttons : 以下 Browser.Buttons (Enum) 型より、以下の値の何れかを指定する :
                OK : OK ボタンのみ表示する。
                OK_CANCEL : OK、キャンセル ボタンを表示する。
                YES_NO : はい、いいえ ボタンを表示する。
                YES_NO_CANCEL : はい、いいえ、キャンセル ボタンを表示する。

戻り値 : String 型。クリックするボタンに応じて下記値が戻り値として返される :
                ok : OK ボタンがクリックされた場合。 
                yes : はいボタンがクリックされた場合。
                no : いいえボタンがクリックされた場合。
                cancel : キャンセルボタンがクリックされた場合。
 
尚、Browser.msgBox(prompt) と Browser.msgBox(prompt, Browser.Buttons.OK) は同じ
結果となる。
  
  
【例】
function ShowMessagebox() {
 Browser.msgBox("Hello, world!");
 Browser.msgBox("Hello, world!", Browser.Buttons.OK_CANCEL);
 Browser.msgBox("Title of dialog", "Hello, world!", Browser.Buttons.YES_NO_CANCEL);
}



実行結果は、上から順に、下記の通り表示される。残念ながら、EXCEL VBA のように、
デフォルトのボタンを指定することはできないようである。




2012年6月1日金曜日

一定の間隔で処理を実行する

一定の間隔で処理を実行する場合は、「トリガー」を下記手順で設定をする。「現在
プロジェクトのトリガー」画面を表示する迄の手順は、今まで同様割愛する。
  
  

設定方法は、「現在のプロジェクトのトリガー」画面について、下記要領でにて各ドロップ
ダウンリストの値を指定する :
  
・ 実行 : 実行したい function を選択する
・ イベントの一つ目のドロップダウン : 「時間主導型」を選択
・ イベントの二つ目のドロップダウン : 「時タイマー」、または、「分タイマー」を選択

・ 時間間隔設定のテキストボックス : 指定したい間隔を選択する。
  
  

下図は実際の設定画面である。この例の場合は、30 分間隔で処理実行されるよう設定
を行っている :
  

毎日定刻に処理を実行する

毎日、特定の時刻に処理を実行する場合は、「トリガー」を下記手順で設定をする。「現在
のプロジェクトのトリガー」画面を表示する迄の手順は、今まで同様割愛する。
  
  

設定方法は、「現在のプロジェクトのトリガー」画面について、下記要領でにて各ドロップ
ダウンリストの値を指定する :
  
・ 実行 : 実行したい function を選択する
・ イベントの一つ目のドロップダウン : 「時間主導型」を選択
・ イベントの二つ目のドロップダウン : 「日タイマー」を選択

・ 時刻設定のテキストボックス : 指定したい時間帯を選択する。
  
  

下図は実際の設定画面である。この例の場合は、毎日の午後 2 時から 3 時の間に処理
実行されるよう設定を行っている :
  

特定の曜日・時間に処理を実行する

特定の曜日・時間に処理を実行する場合は、「トリガー」を下記手順で設定をする。但し、
「現在のプロジェクトのトリガー」画面を表示する迄の手順は、『スプレッドシートが開くとき
にスクリプトを実行する』の項で記した方法と同一なので割愛する。
  
  

設定方法は、「現在のプロジェクトのトリガー」画面について、下記要領でそれぞれの
ドロップダウンリストの値を選択する :
  
・ 実行 : 実行したい function を選択する
・ イベントの一つ目のドロップダウン : 「時間主導型」を選択
・ イベントの二つ目のドロップダウン : 「週タイマー」を選択

・ イベントの三つ目のドロップダウン : 指定したい曜日を選択する。
・ 時刻設定のテキストボックス : 指定したい時間帯を選択する。
  
  

下図は実際の設定画面である。この例の場合は、毎週火曜日の午前 5 時から 6 時の間
に処理が実行されるよう設定を行っている :
  

特定の日時に処理を実行する

特定の日時に処理を実行する場合は、「トリガー」を下記手順で設定を行う。但し、「現在
のプロジェクトのトリガー」画面を表示する迄の手順は、『スプレッドシートが開くときにスク
リプトを実行する』の項で記した方法と同一なので割愛する。
  
  
設定方法は、「現在のプロジェクトのトリガー」画面について、下記要領でそれぞれのドロップ
ダウンリストの値を選択する :
  
・ 実行 : 実行したい function を選択する
・ イベントの一つ目のドロップダウン : 「時間主導型」を選択
・ イベントの二つ目のドロップダウン : 「特定の日時」を選択

・ 日時設定のテキストボックス : YYYY-MM-DD HH:MM 形式で日時を指定
  
  
実際の設定画面は下図の通り :
  

スプレッドシートが開くときにスクリプトを実行する

スプレッドシートが開くときにスクリプトを実行するためには「トリガー」の設定を行う必要が
ある。先ずは、下記コードを準備する。メッセージボックスにメッセージ「開いたよ!!」と表示
させるだけの単純なものである。
  
  
function ShowMessage() {
  Browser.msgBox("開いた!!");
}
  
  
コードを書いて保存したら、メニューの「リソース」→「現在のスクリプトのトリガー」を選択する :
  
  
トリガーが何も設定されていない場合は、
  
トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。 」
  
と書かれてある部分をクリックし、既にトリガーを一つ以上設定している場合は
  
新しいトリガーを追加
  
の部分をクリックする(下図はトリガーが一つも設定されていない場合) :
  
    
すると、下図のようなウィンドウが表示されるので、下記要領でそれぞれのドロップダウン
リストの値を選択する :
  
・ 実行 : 実行したい function を選択する
・ イベントの一つ目のドロップダウン : 「スプレッドシートから」を選択
・ イベントの二つ目のドロップダウン : 「起動時」を選択
  
  
最後に「保存」ボタンをクリックしてウィンドウを閉じてトリガーの設定を完了する。スプレッド
シートを一旦閉じて、再度開くと、下図のようなメッセージボックスが表示される :

  
但し、メッセージボックスが表示されるまで数秒かかってしまうので、要注意。