Google Apps Script(GAS)は、Googleのサービスと連携して自動化やツール開発ができる便利なスクリプト言語です。
その中でも「インプットボックス(入力ダイアログ)」は、ユーザーからの入力を簡単に受け取るための手段として多く利用されています。
この記事では、インプットボックスの基本的な使い方から、応用的な活用例までをわかりやすく解説していきます。
初心者の方でも実装できるよう、サンプルコード付きで丁寧に説明していきますので、ぜひ最後までご覧ください。
インプットボックスとは何か?
Google Apps Scriptにおけるインプットボックスとは、ユーザーに対して入力を求めるダイアログボックスのことです。
ブラウザ上にポップアップとして表示され、ユーザーが文字列などを入力し、その値をスクリプト側で取得することができます。
代表的な使い方は、次のような場面です。
- 名前や日付などの単純な情報入力
- 簡易的なアンケート
- 条件付き処理のためのキーワード入力 など
入力を受け取ることで、スクリプトの実行内容を柔軟に変更できるようになります。
インプットボックスの基本構文
インプットボックスは、Browser.inputBox()
または ui.prompt()
を使って表示できます。
以下に、それぞれの基本構文を紹介します。
1. Browser.inputBox() の使い方
function showInputBox() {
var input = Browser.inputBox('あなたの名前を入力してください');
Logger.log('入力された名前: ' + input);
}
Browser.inputBox()
は、単純な入力ボックスを表示します。- ユーザーが入力した内容は文字列として返され、変数に格納されます。
2. ui.prompt() の使い方
こちらはGoogleドキュメントやスプレッドシートの「UI(ユーザーインターフェース)」機能を使った例です。
function promptWithUI() {
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('確認', 'お名前を入力してください', ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() == ui.Button.OK) {
Logger.log('入力された名前: ' + response.getResponseText());
} else {
Logger.log('キャンセルされました。');
}
}
ui.prompt()
は、ボタン選択の結果も取得できます。getSelectedButton()
で押されたボタンを判断し、getResponseText()
で入力値を取得します。
Browser.inputBoxとui.promptの違い
機能 | Browser.inputBox | ui.prompt |
---|---|---|
使用できるアプリ | 全体(Apps Script全般) | スプレッドシートやドキュメントなど |
ボタンの制御 | できない(OKのみ) | OK/CANCELなど複数指定可能 |
レイアウト | シンプル | より柔軟 |
利用場面 | 単純な入力 | 選択肢や分岐処理のある入力 |
どちらを使うかは、スクリプトの利用シーンに応じて選ぶとよいでしょう。
インプットボックスで取得した値を使う実用例
ここでは、インプットボックスを使った簡単な業務効率化スクリプトを紹介します。
1. 入力値をスプレッドシートに記録する
function recordUserInput() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('入力してください', '登録するデータを入力してください', ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() == ui.Button.OK) {
var text = response.getResponseText();
sheet.appendRow([new Date(), text]);
} else {
Logger.log('キャンセルされました');
}
}
このスクリプトは、入力された内容とその日時をスプレッドシートの新しい行に記録します。
2. 条件分岐に応じた処理を行う
function handleCommands() {
var input = Browser.inputBox('コマンドを入力してください(start/stop)');
if (input.toLowerCase() === 'start') {
Logger.log('処理を開始します。');
} else if (input.toLowerCase() === 'stop') {
Logger.log('処理を終了します。');
} else {
Logger.log('無効なコマンドです。');
}
}
このように、入力値に応じて異なる処理をさせることも可能です。
入力値のバリデーション(検証)のコツ
ユーザーが無効な入力をする可能性もあるため、簡単なチェック処理を加えると安全です。
1. 空欄チェック
if (!input || input.trim() === '') {
Logger.log('入力が空です');
return;
}
2. 数値チェック
if (isNaN(input)) {
Logger.log('数値を入力してください');
return;
}
このような検証ロジックを加えることで、スクリプトの安定性が向上します。
よくあるエラーとその対処法
1. SpreadsheetApp.getUi()でエラーになる
これは、GASのコンテキストが「スプレッドシート」でない場合に発生します。ui.prompt()
を使う場合は、スプレッドシートやドキュメントと連携したプロジェクトで実行する必要があります。
2. 入力がnullになる
ユーザーが「キャンセル」ボタンを押した場合や、何も入力せずに閉じた場合、null
や空文字になることがあります。
そのため、null
チェックを忘れずに入れましょう。
まとめ
Google Apps Scriptにおけるインプットボックスは、ユーザーから簡単に情報を取得できる便利な手段です。Browser.inputBox()
とui.prompt()
の2つを目的に応じて使い分けることで、対話的で柔軟なスクリプトが構築できます。
ポイントの復習:
- 単純な入力には
Browser.inputBox()
- ボタン付きや複雑な入力には
ui.prompt()
- 入力値には必ずバリデーション処理を加える
- 入力値をスプレッドシートに記録するなど、業務効率化にも応用可能
これらを理解し活用することで、より実践的なGoogle Apps Scriptが書けるようになります。
ぜひ、ご自身のプロジェクトにインプットボックスを取り入れてみてください!