簡単なようで結構ハマったので、メモ代わりに残すこととする。
参考: 【GAS】SpreadSheetからGoogleDriveのフォルダを開く
https://sites.google.com/a/apps-gae.com/apps-gae-com/tips/%E3%80%90gas%E3%80%91spreadsheetkaragoogledrivenoforudawokaiku
※サイト移転でリンクが切れていたので、まだ残っているページをリンクしております。リンクが切れてたらごめんなさい。
GAS(Google Apps Script)は便利なんだけど、ExcelVBAと同じような感覚で使ってると、意外なところでひっかかったりする。
その1つが「別のURLに遷移する」処理。
VBAなら、ブラウザを起動、URLをパラメータに渡せば済むんだけども、Googleスプレッドシートだとそういうわけにもいかず。
実装方法
GASの場合、メッセージウィンドウを作ってあげて、そこにアンカーリンクを用意、そいつをクリックしてもらう、という処理ができる
ということで、さっそくコードから。
// メッセージウィンドウを開く処理。
// <引数>
// title ・・・ ウィンドウタイトル
// message ・・・ アンカータグが設定されるメッセージ
// href ・・・ リンク先URL
function showURL(title,message,href){
// 新規メッセージウィンドウのサイズを設定。この例だと50px x 300px のウィンドウが生成される。
var app = UiApp.createApplication().setHeight(50).setWidth(300);
app.setTitle(title); // ウィンドウのタイトルを設定
var link = app.createAnchor(message, href); // ウィンドウの内容として、アンカーリンクを設定
app.add(link);
// リンクをクリックした後にどういう処理をするかを定義。
// 今回は、リンクをクリックした後にウィンドウを閉じる処理(hide関数)を呼び出す処理を追加。
// 特に何も処理しなくてよければ、下記2行は削除してもよい。
var handler = app.createServerHandler(‘hide’);
link.addClickHandler(handler);// add serverHandler to the link itself
// アクティブなシートにウィンドウを表示する
var doc = SpreadsheetApp.getActive();
doc.show(app);
}
// ウィンドウを閉じる処理
function hide(){
var app = UiApp.getActiveApplication().close();// close the popup window
return app;// apply change
}
こんな感じで関数を追加しておく。
あとは、
showURL(“Google”,”クリックでジャンプ!”,”http://www.google.co.jp”);
という感じで呼び出してあげると、
こんな感じに表示される。このメッセージウィンドウを使うと、いろいろなことができるようになるので、汎用性は高い・・・と思う。