Google Apps Script

【Google Apps Script】ui.alert完全ガイド!メッセージの改行からボタン分岐までサンプルコードで解説

スポンサーリンク

「GASで処理完了のメッセージを出したいけど、どう書けばいい?」
「長い確認メッセージを改行して見やすくしたい」
「『はい』『いいえ』で処理を分ける方法が分からない」

この記事では、そんなGAS初心者から一歩進んだ使い方をしたい中級者まで、ui.alertの全てを徹底解説します。
コピペで使える基本から、実務で役立つ条件分岐、他のダイアログ機能との使い分けまで、この記事一本でマスターできます。


ui.alertの基本 – まずはコピペで使ってみよう

ui.alertは、Google Apps Script(GAS)でユーザーにメッセージを伝えたり、操作の確認を求めたりする際に使う、最も基本的で重要な機能です。

ui.alertとは?スプレッドシートにメッセージを表示する一番簡単な方法

ui.alertは、スプレッドシートなどの画面上に「メッセージボックス(ダイアログ)」を表示する機能です。
Webサイトでよく見る「OK」ボタン付きのポップアップウィンドウをイメージしてください。ui.alertは、GASのUiクラスに含まれるメソッドの一つです。

コピペでOK!最もシンプルなalertのサンプルコード

まずは、ui.alertを使って最も基本的なメッセージボックスを表示してみましょう。
このコードをコピーして、ご自身のGASプロジェクトに貼り付け、実行してみてください。

function showSimpleAlert() {
  const ui = SpreadsheetApp.getUi(); 
  ui.alert('処理が完了しました。');
}

メッセージを見やすく整形する2つの必須テクニック

ui.alertのメッセージをより分かりやすくするための、簡単で効果的なテクニックを2つご紹介します。

1. \nを使ってメッセージを改行する

メッセージ内で改行したい箇所に「\n」(バックスラッシュ+n)を挿入するだけで、メッセージを複数行に分けて表示できます。

function showAlertWithNewLine() {
  const ui = SpreadsheetApp.getUi();
  ui.alert('1行目のメッセージ\n2行目のメッセージ');
}

2. タイトルを追加して、さらに分かりやすくする

ui.alert(タイトル, メッセージ); のように、第一引数にタイトルを指定することで、ダイアログの目的をより明確に伝えられます。

function showAlertWithTitle() {
  const ui = SpreadsheetApp.getUi();
  const title = '処理完了';
  const message = 'データのエクスポートが完了しました。\n合計100件のレコードを処理しました。';
  
  ui.alert(title, message, ui.ButtonSet.OK);
}

【コピペで使える】ボタンの種類(ButtonSet)と分岐処理サンプルコード全集

ui.alertの真価は、ユーザーが押したボタンに応じて処理を分岐させられる点にあります。
ここでは、ボタンの種類ごとに、そのまま使える分岐処理のサンプルコードを全て紹介します。

サンプル1:OK / キャンセル (ui.ButtonSet.OK_CANCEL)

処理を続行するか、中断するかをユーザーに問いかけます。

function showAlertOkCancel() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.alert('処理を続行しますか?', ui.ButtonSet.OK_CANCEL);

  // 押されたボタンによって処理を分岐
  if (response == ui.Button.OK) {
    SpreadsheetApp.getActiveSpreadsheet().toast('「OK」がクリックされました。');
  } else {
    // 「キャンセル」ボタンがクリックされた場合
    SpreadsheetApp.getActiveSpreadsheet().toast('「キャンセル」がクリックされました。');
  }
}

サンプル2:はい / いいえ (ui.ButtonSet.YES_NO)

ユーザーの明確な意思(Yes/No)を確認したい場合に最適です。

function showAlertYesNo() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.alert('この内容で保存しますか?', ui.ButtonSet.YES_NO);

  // 押されたボタンによって処理を分岐
  if (response == ui.Button.YES) {
    SpreadsheetApp.getActiveSpreadsheet().toast('「はい」がクリックされました。');
  } else {
    // 「いいえ」ボタンがクリックされた場合
    SpreadsheetApp.getActiveSpreadsheet().toast('「いいえ」がクリックされました。');
  }
}

サンプル3:はい / いいえ / キャンセル (ui.ButtonSet.YES_NO_CANCEL)

「はい」「いいえ」に加え、操作自体をキャンセルする選択肢も提供する、最も丁寧な確認方法です。

function showAlertYesNoCancel() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.alert('変更を保存して終了しますか?', ui.ButtonSet.YES_NO_CANCEL);

  // 押されたボタンによって処理を分岐
  if (response == ui.Button.YES) {
    SpreadsheetApp.getActiveSpreadsheet().toast('「はい」がクリックされました。');
  } else if (response == ui.Button.NO) {
    SpreadsheetApp.getActiveSpreadsheet().toast('「いいえ」がクリックされました。');
  } else {
    // 「キャンセル」ボタンがクリックされた場合
    SpreadsheetApp.getActiveSpreadsheet().toast('「キャンセル」がクリックされました。');
  }
}

【重要】スクリプトの停止について
ui.alertが表示されている間、スクリプトの実行は一時停止し、ユーザーがボタンをクリックするまで待機します。いずれかのボタンが押されると、対応するButtonオブジェクトを返し、スクリプトが再開します。


目的で使い分ける!他のダイアログ機能との違い

Excel VBAのMsgBoxに慣れている方にとって、この2つの違いは混乱の元ですが、ポイントはスクリプトの種類です。
現在の仕様では、両者の見た目は全く同じであり、どちらもスプレッドシートのメニューやボタンから問題なく表示できます。

唯一にして最大の違いは、「どの種類のスクリプトで使えるか」という点です。

機能ui.alertBrowser.msgBox
コンテナバインド型
(スプレッドシート等に紐づく)
◎ (推奨)◯ (使用可能)
スタンドアロン型
(ファイルに紐づかない)
× (エラーになる)◎ (唯一の選択肢)

【結論】どう使い分けるか

  • スプレッドシートやドキュメントのツールを作る場合(コンテナバインド型):
    SpreadsheetApp.getUi()で取得したUIにメッセージを出すのが自然なため、ui.alertを使いましょう。
  • どのファイルにも依存しない独立したツールを作る場合(スタンドアロン型):
    ui.alertは使えないため、Browser.msgBoxが唯一の選択肢となります。

このスクリプトの種類の違いについては、以下の記事で詳しく解説しています。

文字入力させたいならui.prompt

ui.alertはメッセージ表示が専門です。
もしユーザーにテキストを入力してもらいたい場合は、ui.promptを使いましょう。


FAQ:ui.alertでよくある質問

Q
ボタンの文言は「OK」から変更できますか?
A

いいえ、できません。
ui.alertで表示される標準ボタンの文言は変更不可能です。
独自のボタン名を使いたい場合は、HTMLサービスを利用したカスタムダイアログを自作する必要があります。

Q
ダイアログの表示位置は変えられますか?
A

いいえ、できません。
ui.alertのダイアログは、常に画面の中央に固定で表示されます。


まとめ

本記事では、Google Apps Scriptにおけるui.alertの基本から、ボタンの種類に応じた分岐処理まで、コピペで使えるサンプルコードを交えて体系的に解説しました。

この記事の要点:

  • ui.alertは、ユーザーにメッセージを伝える最も簡単な方法。
  • \nを使えば、メッセージを自由に改行できる。
  • 4種類のButtonSetを使い分け、ボタンの種類ごとに分岐処理が可能。
  • 文字入力はui.prompt、VBA経験者はBrowser.msgBoxとの違いに注意する。

ui.alertを使いこなすことで、あなたのGASツールは格段に分かりやすく、安全になります。ぜひ、この記事のサンプルコードを参考に、ご自身のプロジェクトで活用してみてください。

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