「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.alert | Browser.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ツールは格段に分かりやすく、安全になります。ぜひ、この記事のサンプルコードを参考に、ご自身のプロジェクトで活用してみてください。







