Googleスプレッドシート上に独自のモーダルウィンドウを出す方法(Google Apps Script)
以前、スプレッドシート上にサイドバーを表示させる方法について書きました。
入力フォームをサイドバーで表現しても良いのですが、横幅が200px固定という縛りがあるのでもう少し面積がほしいと思ったり、Excelマクロのフォームのような感じで表現したい場合は今回紹介するモーダルウィンドウがおすすめです。
実行例
こちらが実行例です。このウィンドウはタイトルバー(同じ白なので見にくいですが位置的にはWindowsフォームと同じ上部)をドラッグすると自由に動きます。今回はこれを作っていきます。
実行例を動画にしてみました。音声が出るので注意ください。
フォームデザイン
まず、フォームのデザインはHTMLで書く必要あります。ここはExcelマクロの方がGUIデザイナーがある分有利ですね。当然HTMLの知識は必要ですし見た目を良くしたいのであればCSSの知識が必要になります。
スクリプトエディタの左サイドメニューの「ファイル」の横にある「+」をクリックします。プルダウンメニューの中から「HTML」を選択します。
以下のようにファイル名を聞いてくるので任意のHTMLファイル名を入力します。拡張子は不要です。今回はindexと名付けました。
入力すると以下の通り拡張子付きでファイル名がセットされ、エディタにはHTMLの基本構文がデフォルトで表示されます。
今回のHTMLは単純なフォームのみとします。ボタンを押すとgoogle.script.host.close();
が作動しウィンドウが閉じます。
<!DOCTYPE html> <html> <head> <base target="_top"> <style> body {font-family: 'メイリオ';} p {margin:0px; font-family: 'メイリオ';} .btn {border: 1px solid #666; background: #eee; height:40px; width:150px; font-family: 'メイリオ';} </style> </head> <body style="padding:0px;"> <div style="margin-top:10px;"> <p>モーダルウィンドウのテストです。</p> </div> <div style="margin-top:10px;text-align; center;"> <button class="btn" onclick="google.script.host.close()">閉じる</button> </div> </body> </html>
GAS側の処理
GAS側のソースコードは以下の通りです。モーダルウィンドウのサイズとタイトルを指定して表示するだけのコードになります。
function showDialog() { var output = HtmlService.createTemplateFromFile('index'); var ss = SpreadsheetApp.getActiveSpreadsheet(); var html = output.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME) .setWidth(500) .setHeight(300) .setTitle('モーダルウィンドウテスト'); ss.show(html); //メッセージボックスとしてを表示する }
showDialog
関数を実行することで実行例で示したモーダルウィンドウが現れます。
スポンサーリンク