複数の人が同時に作業できることが魅力のスプレッドシートですが、他の人の意図しない入力で困ることがありますよね。例えば、必須入力箇所が未入力であったり、データの書き換えたりなど…。
そんな時に役立つのがアラートメッセージです。ブラウザにメッセージボックスを表示させて注意を促します。条件分岐によってユーザーの行動制限もできたり、スクリプトの動作スイッチにも使えたりしますので是非GASのアラートメッセージを覚えておきましょう。

なんかあのWEBで使えるExcelあるじゃん、触ってたら訳わからなくなった、あとはよろしく。

なん、だと。データが書き換わっている。なんで、こんな酷いことができるんだ
アラートの種類

GASでメッセージボックスを表示させる方法は、次の2種類があります。
- アラートダイアログ
- プロンプトダイアログ
アラートダイアログはボタンがあるダイアログで、プロンプトダイアログはそれに入力欄があります。アラートメッセージは注意喚起のポップアップだけでなく、OKやいいえ、入力された文字によって条件分岐させることも可能です。
また、今回はダイアログを表示させる方法としてBrowserメソッドとUiクラスの二つをご紹介します。
Browserメソッドはスプレッドシート専用のメソッドで、Uiは他のグーグルアプリにも使用できます。スプレッドシート以外にもアラートメッセージを使いたい方はUiを選んでください。スプレッドシートならBrowserメソッドとUiクラスのどちらを使ってもOKです。

部長、uiを使うとbrowserと違ってそのまま使えませんからね。uiを呼び出して、なおかつ回答をgetResponseTextやgetSelectedButtonを使って受け取る必要がありますよ。

ふーん(uiは面倒くさそうだなあ)
メッセージダイアログ

メッセージダイアログの使い方をbrowserから先にご紹介します。
Browser.msgBox
Browser.msgBoxはメッセージの内容やボタンの種類によって、次の記述方法があります。
Browser.msgBox( メッセージ );
Browser.msgBox( メッセージ , ボタンの種類 );
Browser.msgBox( タイトル , メッセージ , ボタンの種類 );
//例
Browser.msgBox( "きつね部長へ","本当にその入力で大丈夫ですか?",Browser.Buttons.YES_NO_CANCEL);
タイトルとボタンは省略ができますが、OKボタンはデフォルトでついてきます。
ui.alert
ui.alertはメッセージの内容やボタンの種類によって、次の記述方法があります。
//種類
ui.alert(メッセージ);
ui.alert(メッセージ, ボタンの種類);
ui.alert(タイトル , メッセージ , ボタンの種類 );
//例
var ui = SpreadsheetApp.getUi();
ui.alert("きつね部長へ","本当にその入力で大丈夫ですか?", ui.ButtonSet.YES_NO_CANCEL);
変数uiでgetUi();オブジェクトを取得しています。getUi();で提供されているアラートというプロパティを呼び出してアラートダイアログを表示させます。
プロンプトダイアログ

メッセージの入力ができるダイアログです。こちらもBrowserとuiの二つがありますので、browserから先にご紹介します。
Browser.inputBox
Browser.inputBoxはメッセージの内容やボタンの種類によって、次の記述方法があります。
Browser.inputBox( メッセージ );
Browser.inputBox(メッセージ,ボタンの種類);
Browser.inputBox(タイトル , メッセージ , ボタンの種類);
//例
Browser.inputBox( "きつね部長へ","本当にその入力で大丈夫ですか?",Browser.Buttons.YES_NO_CANCEL);
基本的にメッセージダイアログと一緒の書き方です。ボタンの種類はbrowserと同じです。タイトルとボタンは省略ができますが、OKボタンはデフォルトでついてきます。
ui.prompt
ui.promptはメッセージの内容やボタンの種類によって、次の記述方法があります。
//種類
ui.prompt( メッセージ );
ui.prompt(メッセージ,ボタンの種類);
ui.prompt(タイトル , メッセージ , ボタンの種類);
//例
var ui = SpreadsheetApp.getUi();
ui.prompt( "きつね部長へ","本当にその入力で大丈夫ですか?",ui.ButtonSet.YES_NO_CANCEL);
こちらもbrowserとほとんど変わりません。違いとしては変数uiでgetUi();オブジェクトを取得し、getUi();で提供されているプロンプトというプロパティを呼び出してプロンプトダイアログを表示させます。
選択肢ごとに条件分岐させる
ボタンや入力によって条件分岐をさせることができます。最初はメッセージダイアログでの条件分岐についてご紹介します。
browserを使ったボタンによる条件分岐

Browser.msgBoxを使った条件分岐の例です。
function myFunction() {
var result = Browser.msgBox("きつね部長へ","本当にその入力で大丈夫ですか?", Browser.Buttons.YES_NO_CANCEL);
if (result == "yes") {
//okを押した時のプログラム
Browser.msgBox("OKだなんて成長しましたね");
} else if(result == "no"){
//いいえを押した時のプログラム
Browser.msgBox("いいえだと…! 平社員からやり直せ");
} else if(result == "cancel"){
//キャンセルを押した時のプログラム
Browser.msgBox("キャンセルしてんじゃねーぞ");
}
}
OK、いいえ、キャンセルのどれを押すかで出てくるメッセージが違います。ボタンによって返ってくる値が違うことを利用して条件分岐させています。ボタンごとの返り値は次の通りです。
プロパティ | ボタン | 返ってくる値 |
OK | OK | ok,cancel |
OK_CANCEL | OK、キャンセル | ok,cancel |
YES_NO | OK、いいえ | yes,no,cancel |
YES_NO_CANCEL | OK、いいえ、キャンセル | yes,no,cancel |
ボタンを押した後はその回答を変数resultに格納、等価演算子「==」を使い回答と比較しています。resultと同じ回答ならば真と判断してそれ以降の処理を実行させます。IFについての詳しい説明は下記をご参照ください。

uiにしたら動かないぞ、壊れてるんじゃないのか

uiだとresultのまま使うことはできません(さっきも伝えたのに…)
Uiを使った入力メッセージによる条件分岐

今度はui.promptを使って条件分岐をさせてみましょう。
function myFunction() {
var ui = SpreadsheetApp.getUi();
var result = ui.prompt("きつね部長へ", "好きな食べ物を教えてください", ui.ButtonSet.OK_CANCEL);
var button = result.getSelectedButton();
var text = result.getResponseText();
if (button == ui.Button.OK) {
ui.alert(text + "食べにいきましょう。ごちです。");
} else if(button == ui.Button.CANCEL) {
ui.alert("キャンセルしてんじゃねーぞ");
}
}
入力した文字が次のダイアログに反映されていることがわかります。
ui.alertやui,promptの場合はユーザーの回答はPromptResponseというオブジェクトで返ってくるため、getResponseTextやgetSelectedButtonをメソッドが必要です。
getResponseTextはユーザーが入力した文字を、getSelectedButtonはユーザーが選択したボタンの値を取得します。上記のコードではボタンの情報をbuttonに、入力されたテキストをtextの変数に取得しています。
またUiのボタンセットは、Uiオブジェクトのプロパティと比較して真偽判定します。
プロパティ | 表示されるボタン | ボタンのプロパティ |
OK | OK | OK,CANCEL |
OK_CANCEL | OK、キャンセル | OK,CANCEL |
YES_NO | OK、いいえ | YES,NO,CANCEL |
YES_NO_CANCEL | OK、いいえ、キャンセル | YES,NO,CANCEL |
Uiはbrowserよりも手順が多いですので下記に箇条書きにしました。参考にしてください。
Uiを使う上でのポイント
- getUi();でUiオブジェクトを取得
- 入力されたテキストはgetResponseTextで取得
- 押されたボタンはgetSelectedButtonで取得
- Uiはui.ButtonSetでボタンセット
- Uiはui.Buttonが提供されているプロパティで真偽判定
まとめ
以上、アラートメッセージを出す方法についてご紹介しました。是非作業効率化に使ってくださいね。当記事が参考になれば幸いです。

なんか文言変えようと思ったらスクリプト触ったら動かなくなったから後はよろしく

酷い
きちんとGASについて学びたい人は「詳解! Google Apps Script完全入門 [第3版]」もおすすめです。クリックするとAmazonに移動します。
コメント