Google Apps Script

【初心者向け】Google Apps Scriptのui.prompt()の使い方|サンプルコード付きで入力ダイアログを解説!

スポンサーリンク

ちょっとした入力値をユーザーから受け取りたい──
Google Apps Scriptを使っていて、そんな場面に出くわしたことはありませんか?

そんな場面で役立つのが、入力欄付きダイアログをその場で表示できる ui.prompt() です。

本記事では、ui.prompt()の使い方とサンプルコードを初心者にもわかりやすく解説します。


なぜGASでテキスト入力ダイアログを使うのか?

簡易な入力が必要なシーンとは?

Google Apps Scriptでは、スクリプト実行中に一時的な値を受け取りたいケースがあります。
たとえば、

  • 担当者名を入力して記録したい
  • 対象の月を入力して集計処理をしたい
  • 管理用のパスワードを入力させて検証したい

こうした処理に対応するために、ui.prompt() を活用することで、素早く入力を取得することができます。

フォームよりも手軽に使える理由

Google フォームのようなツールもありますが、作成・共有・集計などに手間がかかります。
ui.prompt() なら、スクリプト内でダイアログをその場で表示できるため、手軽にインタラクティブな入力処理を実現できます。


ui.promptの基本と構文解説

prompt()の3つの書き方と使い分け

ui.prompt() には3つの呼び出し方があります。目的に応じて使い分けることができ、それぞれの構文は後述のコード例とともに解説します。

① メッセージのみ

function sample() {
  const ui = SpreadsheetApp.getUi();
  const res = ui.prompt("名前を入力してください");
  const input = res.getResponseText();
}

② メッセージ+ボタンセット

function sample() {
  const ui = SpreadsheetApp.getUi();
  const res = ui.prompt("担当者を入力してください", ui.ButtonSet.OK_CANCEL);
  const input = res.getResponseText();
}

③ タイトル+メッセージ+ボタンセット

function sample() {
  const ui = SpreadsheetApp.getUi();
  const res = ui.prompt("担当者入力", "処理を実行する担当者の名前を入力してください。", ui.ButtonSet.OK_CANCEL);
  const input = res.getResponseText();
}

ButtonSetで選べるボタンの種類

ui.prompt() では、ユーザーに表示するボタンの組み合わせを ButtonSet で指定できます。

利用できるボタンセットは以下の通りです:

  • ui.ButtonSet.OK
  • ui.ButtonSet.OK_CANCEL
  • ui.ButtonSet.YES_NO
  • ui.ButtonSet.YES_NO_CANCEL

この4種類が提供されており、処理内容に応じて最適なボタンセットを選ぶことができます。

PromptResponseオブジェクトの扱い方

ui.prompt() の戻り値は PromptResponse オブジェクトで、getResponseText()getSelectedButton() などのメソッドを使って、ユーザーの入力や選択内容を取得できます。

戻り値である PromptResponse オブジェクトから以下の情報を取得できます:

  • getResponseText():入力値を取得
  • getSelectedButton():押されたボタンを判定(Button で定義)

実用サンプルコードで学ぶui.prompt

入力を取得してスプレッドシートに記録する例

function recordName() {
  const ui = SpreadsheetApp.getUi();
  const res = ui.prompt("名前入力", "記録する名前を入力してください", ui.ButtonSet.OK_CANCEL);
  if (res.getSelectedButton() === ui.Button.OK) {
    const name = res.getResponseText();
    SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange("A1").setValue(name);
  }
}

入力内容によって処理を分岐させる例

function chooseSheet() {
  const ui = SpreadsheetApp.getUi();
  const res = ui.prompt("シート名入力", "表示したいシート名を入力してください", ui.ButtonSet.OK_CANCEL);
  if (res.getSelectedButton() === ui.Button.OK) {
    const name = res.getResponseText();
    const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name);
    if (sheet) sheet.activate();
    else ui.alert("シートが見つかりませんでした。");
  }
}

入力が空白だった場合のバリデーション

function validateInput() {
  const ui = SpreadsheetApp.getUi();
  const res = ui.prompt("入力確認", "値を入力してください", ui.ButtonSet.OK_CANCEL);
  if (res.getSelectedButton() === ui.Button.OK) {
    const value = res.getResponseText();
    if (!value) {
      ui.alert("入力が空です。再実行してください。");
    } else {
      Logger.log("入力値: " + value);
    }
  }
}

inputBoxとの違いと使い分け

ui.prompt() と似た関数として Browser.inputBox() があります。両者には使用環境や戻り値の違いがあり、目的に応じて使い分けることが重要です。

詳しくは、Browser.inputBox()を使った入力ダイアログの具体例を以下の記事で解説しています。

使用できる環境(バインド型とスタンドアロン)

  • ui.prompt():スプレッドシート、ドキュメントなどにバインドされたスクリプトで使用
  • Browser.inputBox():どのスクリプト形式でも使用可能

戻り値の取り扱いの違い

  • ui.prompt()PromptResponse オブジェクト(入力値とボタン)
  • inputBox():入力値を直接文字列で返す(キャンセルは空文字)

どちらを使うべきかの判断基準

  • スプレッドシート操作と一体で使いたい:ui.prompt()
  • スタンドアロンで汎用的に使いたい:Browser.inputBox()

よくある質問(FAQ)

Q
スタンドアロンで使えますか?
A

いいえ。ui.prompt() はバインド型(スプレッドシート等)専用です。スタンドアロンでは Browser.inputBox() を使いましょう。

Q
ボタンの判定はどうやって行う?
A

getSelectedButton() を使って押されたボタンを判定できます。OKなら ui.Button.OK、キャンセルなら ui.Button.CANCEL、×で閉じた場合は ui.Button.CLOSE が返ります。

Q
入力が空だった場合の処理方法は?
A

入力値が空の場合は if (!input) などでチェックし、再入力を促すアラートを表示するのが一般的です。

Q
promptとinputBox、どちらが便利?
A

スプレッドシートにバインドされている場合は、複数ボタンの処理も可能な ui.prompt() の方が柔軟に使えます。

Q
プレースホルダーを入れるには?
A

ui.prompt() ではプレースホルダーは使用できません。必要な場合は HTMLService を用いて独自にダイアログを構築する必要があります。

Q
複数行に改行して表示できますか?
A

メッセージ内で \n を使うことで改行できます。たとえば "1行目\n2行目" のように記述すると、メッセージが複数行で表示されます。


まとめ

ui.prompt() は、スプレッドシートをはじめとする Google Apps Script のバインド型スクリプトにおいて、ユーザーからの入力を簡単に取得するために非常に便利な関数です。

OK・キャンセルなどのボタンセットを指定できることで、ユーザーの選択に応じた分岐処理が可能になり、業務フローに柔軟に対応できます。

また、PromptResponse オブジェクトを使えば、ユーザーが入力した値だけでなく、どのボタンを押したのかも取得できるため、安全な処理分岐を実現できます。

使用環境によっては Browser.inputBox() との使い分けも重要です。
スプレッドシートと連携したスクリプトでは ui.prompt() を、スタンドアロンでの利用や単純な入力には inputBox() を活用することで、目的に合った入力処理を実装できます。

ui.prompt() をうまく活用すれば、確認処理やパラメータ入力など、さまざまなシーンでユーザーとのやりとりをスムーズに行うことができるでしょう。

タイトルとURLをコピーしました