Class Ui

Ui

Google アプリのユーザー インターフェース環境のインスタンスで、スクリプトでメニュー、ダイアログ、サイドバーなどの機能を追加できます。スクリプトは、開いているエディタの現在のインスタンスの UI のみを操作できます。また、スクリプトがエディタにコンテナ結合されている場合に限られます。

// Display a dialog box with a title, message, input field, and "Yes" and "No"
// buttons. The user can also close the dialog by clicking the close button in
// its title bar.
const ui = SpreadsheetApp.getUi();
const response = ui.prompt(
    'Getting to know you',
    'May I know your name?',
    ui.ButtonSet.YES_NO,
);

// Process the user's response.
if (response.getSelectedButton() === ui.Button.YES) {
  Logger.log('The user\'s name is %s.', response.getResponseText());
} else if (response.getSelectedButton() === ui.Button.NO) {
  Logger.log('The user didn\'t want to provide a name.');
} else {
  Logger.log('The user clicked the close button in the dialog\'s title bar.');
}

プロパティ

プロパティタイプ説明
ButtonButtonアラートまたは PromptResponse.getSelectedButton() から返される、事前定義されたローカライズされたダイアログ ボタンを表す列挙型。ユーザーがダイアログ内のどのボタンをクリックしたかを示します。
ButtonSetButtonSetアラートまたはプロンプトに追加できる、事前定義されたローカライズされた 1 つ以上のダイアログ ボタンのセットを表現する列挙型。

メソッド

メソッド戻り値の型概要
alert(prompt)Button指定されたメッセージと [OK] ボタンを含むダイアログ ボックスがユーザーのエディタで開きます。
alert(prompt, buttons)Button指定されたメッセージとボタンのセットが含まれるダイアログ ボックスをユーザーのエディタで開きます。
alert(title, prompt, buttons)Button指定されたタイトル、メッセージ、ボタンのセットで、ユーザーのエディタにダイアログ ボックスを開きます。
createAddonMenu()Menuエディタの [Extensions] メニューにサブメニューを挿入するために使用できるビルダーを作成します。
createMenu(caption)Menuエディタのユーザー インターフェースにメニューを追加するために使用できるビルダーを作成します。
prompt(prompt)PromptResponse指定されたメッセージと [OK] ボタンを含む入力ダイアログ ボックスがユーザーのエディタで開きます。
prompt(prompt, buttons)PromptResponse指定されたメッセージとボタンのセットで、ユーザーのエディタに入力ダイアログ ボックスを開きます。
prompt(title, prompt, buttons)PromptResponse指定されたタイトル、メッセージ、ボタンのセットで、ユーザーのエディタに入力ダイアログ ボックスを開きます。
showModalDialog(userInterface, title)voidカスタム クライアントサイド コンテンツを含むモーダル ダイアログ ボックスがユーザーのエディタで開きます。
showModelessDialog(userInterface, title)voidユーザーのエディタに、カスタムのクライアントサイド コンテンツを含むモーダルのないダイアログ ボックスを開きます。
showSidebar(userInterface)voidユーザーのエディタに、カスタムのクライアントサイド コンテンツを含むサイドバーが開きます。

詳細なドキュメント

alert(prompt)

指定されたメッセージと [OK] ボタンを含むダイアログ ボックスがユーザーのエディタで開きます。このメソッドは、ダイアログが開いている間、サーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトが再開されますが、Jdbc 接続と LockService ロックは停止中も保持されません。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

// Display "Hello, world" in a dialog box with an "OK" button. The user can also
// close the dialog by clicking the close button in its title bar.
SpreadsheetApp.getUi().alert('Hello, world');

パラメータ

名前説明
promptStringダイアログ ボックスに表示するメッセージ。

戻る

Button - ユーザーがクリックしたボタン。


alert(prompt, buttons)

指定されたメッセージとボタンのセットが含まれるダイアログ ボックスがユーザーのエディタで開きます。このメソッドは、ダイアログが開いている間、サーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトが再開されますが、Jdbc 接続と LockService ロックは停止中も保持されません。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

// Display a dialog box with a message and "Yes" and "No" buttons. The user can
// also close the dialog by clicking the close button in its title bar.
const ui = SpreadsheetApp.getUi();
const response = ui.alert(
    'Are you sure you want to continue?',
    ui.ButtonSet.YES_NO,
);

// Process the user's response.
if (response === ui.Button.YES) {
  Logger.log('The user clicked "Yes."');
} else {
  Logger.log(
      'The user clicked "No" or the close button in the dialog\'s title bar.',
  );
}

パラメータ

名前説明
promptStringダイアログ ボックスに表示するメッセージ。
buttonsButtonSetダイアログ ボックスに表示されるボタン。

戻る

Button - ユーザーがクリックしたボタン。


alert(title, prompt, buttons)

指定されたタイトル、メッセージ、ボタンのセットで、ユーザーのエディタにダイアログ ボックスを開きます。このメソッドは、ダイアログが開いている間、サーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトが再開されますが、Jdbc 接続と LockService ロックは停止中に保持されません。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

// Display a dialog box with a title, message, and "Yes" and "No" buttons. The
// user can also close the dialog by clicking the close button in its title bar.
const ui = SpreadsheetApp.getUi();
const response = ui.alert(
    'Confirm',
    'Are you sure you want to continue?',
    ui.ButtonSet.YES_NO,
);

// Process the user's response.
if (response === ui.Button.YES) {
  Logger.log('The user clicked "Yes."');
} else {
  Logger.log(
      'The user clicked "No" or the close button in the dialog\'s title bar.',
  );
}

パラメータ

名前説明
titleStringダイアログ ボックスの上に表示するタイトル。
promptStringダイアログ ボックスに表示するメッセージ。
buttonsButtonSetダイアログ ボックスに表示されるボタン。

戻る

Button - ユーザーがクリックしたボタン。


createAddonMenu()

エディタの [Extensions] メニューにサブメニューを挿入するために使用できるビルダーを作成します。メニューは、Menu.addToUi() が呼び出されるまでは実際に更新されません。スクリプトがアドオンとして実行されている場合、サブメニュー名はウェブストア内のアドオンの名前と一致します。スクリプトがドキュメントに直接バインドされている場合、サブメニュー名はスクリプトの名前と一致します。詳しくは、メニューのガイドをご覧ください。

// Add an item to the Add-on menu, under a sub-menu whose name is set
// automatically.
function onOpen(e) {
  SpreadsheetApp.getUi()
      .createAddonMenu()
      .addItem('Show', 'showSidebar')
      .addToUi();
}

戻る

Menu - 新しいメニュー ビルダー。


createMenu(caption)

エディタのユーザー インターフェースにメニューを追加するために使用できるビルダーを作成します。メニューは、Menu.addToUi() が呼び出されるまでは実際には追加されません。詳しくは、メニューのガイドをご覧ください。最上位メニューのラベルは見出しの語頭を大文字にする必要があります(すべての主要な単語を大文字にします)。サブメニューのラベルは最初の語頭を大文字にする必要があります(最初の単語のみを大文字にします)。スクリプトがアドオンとして公開されている場合、caption パラメータは無視され、メニューは createAddonMenu() と同様に拡張機能メニューのサブメニューとして追加されます。

// Add a custom menu to the active document, including a separator and a
// sub-menu.
function onOpen(e) {
  SpreadsheetApp.getUi()
      .createMenu('My Menu')
      .addItem('My menu item', 'myFunction')
      .addSeparator()
      .addSubMenu(
          SpreadsheetApp.getUi()
              .createMenu('My sub-menu')
              .addItem('One sub-menu item', 'mySecondFunction')
              .addItem('Another sub-menu item', 'myThirdFunction'),
          )
      .addToUi();
}

パラメータ

名前説明
captionStringメニューのラベル。トップレベル メニューの場合はすべての主要な単語が大文字で、サブメニューの場合は最初の単語のみが大文字になります。

戻る

Menu - 新しいメニュー ビルダー。


prompt(prompt)

指定されたメッセージと [OK] ボタンを含む入力ダイアログ ボックスがユーザーのエディタで開きます。このメソッドは、ダイアログが開いている間、サーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトが再開されますが、Jdbc 接続と LockService ロックは停止中に保持されません。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

// Display a dialog box with a message, input field, and an "OK" button. The
// user can also close the dialog by clicking the close button in its title bar.
const ui = SpreadsheetApp.getUi();
const response = ui.prompt('Enter your name:');

// Process the user's response.
if (response.getSelectedButton() === ui.Button.OK) {
  Logger.log('The user\'s name is %s.', response.getResponseText());
} else {
  Logger.log('The user clicked the close button in the dialog\'s title bar.');
}

パラメータ

名前説明
promptStringダイアログ ボックスに表示するメッセージ。

戻る

PromptResponse - ユーザーの回答を表します。


prompt(prompt, buttons)

指定されたメッセージとボタンのセットで、ユーザーのエディタに入力ダイアログ ボックスを開きます。このメソッドは、ダイアログが開いている間、サーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトが再開されますが、Jdbc 接続と LockService ロックは停止中に保持されません。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

// Display a dialog box with a message, input field, and "Yes" and "No" buttons.
// The user can also close the dialog by clicking the close button in its title
// bar.
const ui = SpreadsheetApp.getUi();
const response = ui.prompt('May I know your name?', ui.ButtonSet.YES_NO);

// Process the user's response.
if (response.getSelectedButton() === ui.Button.YES) {
  Logger.log('The user\'s name is %s.', response.getResponseText());
} else if (response.getSelectedButton() === ui.Button.NO) {
  Logger.log('The user didn\'t want to provide a name.');
} else {
  Logger.log('The user clicked the close button in the dialog\'s title bar.');
}

パラメータ

名前説明
promptStringダイアログ ボックスに表示するメッセージ。
buttonsButtonSetダイアログ ボックスに表示されるボタン。

戻る

PromptResponse - ユーザーの回答を表します。


prompt(title, prompt, buttons)

指定されたタイトル、メッセージ、ボタンのセットで、ユーザーのエディタに入力ダイアログ ボックスを開きます。このメソッドは、ダイアログが開いている間、サーバーサイド スクリプトを停止します。ユーザーがダイアログを閉じるとスクリプトが再開されますが、Jdbc 接続と LockService ロックは停止中に保持されません。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

// Display a dialog box with a title, message, input field, and "Yes" and "No"
// buttons. The user can also close the dialog by clicking the close button in
// its title bar.
const ui = SpreadsheetApp.getUi();
const response = ui.prompt(
    'Getting to know you',
    'May I know your name?',
    ui.ButtonSet.YES_NO,
);

// Process the user's response.
if (response.getSelectedButton() === ui.Button.YES) {
  Logger.log('The user\'s name is %s.', response.getResponseText());
} else if (response.getSelectedButton() === ui.Button.NO) {
  Logger.log('The user didn\'t want to provide a name.');
} else {
  Logger.log('The user clicked the close button in the dialog\'s title bar.');
}

パラメータ

名前説明
titleStringダイアログ ボックスの上に表示するタイトル。
promptStringダイアログ ボックスに表示するメッセージ。
buttonsButtonSetダイアログ ボックスに表示されるボタン。

戻る

PromptResponse - ユーザーの回答を表します。


showModalDialog(userInterface, title)

ユーザーのエディタに、カスタムのクライアントサイド コンテンツを含むモーダル ダイアログ ボックスを開きます。この方法では、ダイアログが開いている間、サーバーサイド スクリプトは停止されません。サーバーサイド スクリプトと通信するには、クライアントサイド コンポーネントが HtmlServicegoogle.script API を使用して非同期コールバックを行う必要があります。ダイアログをプログラムで閉じるには、HtmlService ウェブアプリのクライアントサイドで google.script.host.close() を呼び出します。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

モーダル ダイアログでは、ユーザーはダイアログ以外の操作を行えません。一方、モードレス ダイアログサイドバーでは、ユーザーがエディタとやり取りできます。ほとんどの場合、モードレス ダイアログよりもモーダル ダイアログまたはサイドバーの方が適しています。

// Display a modal dialog box with custom HtmlService content.
const htmlOutput = HtmlService
                       .createHtmlOutput(
                           '<p>A change of speed, a change of style...</p>',
                           )
                       .setWidth(250)
                       .setHeight(300);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'My add-on');

パラメータ

名前説明
userInterfaceObject表示するインターフェースを表す HtmlOutput
titleStringダイアログのタイトル。userInterface オブジェクトで setTitle() を呼び出して設定されたタイトルをオーバーライドします。

承認

このメソッドを使用するスクリプトには、次のスコープの 1 つ以上による承認が必要です。

  • https://www.googleapis.com/auth/script.container.ui

showModelessDialog(userInterface, title)

ユーザーのエディタに、カスタムのクライアントサイド コンテンツを含むモーダルのないダイアログ ボックスを開きます。この方法では、ダイアログが開いている間、サーバーサイド スクリプトは停止されません。サーバーサイド スクリプトと通信するには、クライアントサイド コンポーネントが HtmlServicegoogle.script API を使用して非同期コールバックを行う必要があります。ダイアログをプログラムで閉じるには、HtmlService ウェブアプリのクライアントサイドで google.script.host.close() を呼び出します。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

モードレス ダイアログでは、ユーザーはダイアログの背後にあるエディタとやり取りできます。一方、モーダル ダイアログはそうではありません。ほとんどの場合、モードレス ダイアログよりもモーダル ダイアログまたはサイドバーのほうが適しています。

// Display a modeless dialog box with custom HtmlService content.
const htmlOutput = HtmlService
                       .createHtmlOutput(
                           '<p>A change of speed, a change of style...</p>',
                           )
                       .setWidth(250)
                       .setHeight(300);
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, 'My add-on');

パラメータ

名前説明
userInterfaceObject表示するインターフェースを表す HtmlOutput
titleStringダイアログのタイトル。userInterface オブジェクトで setTitle() を呼び出して設定されたタイトルをオーバーライドします。

承認

このメソッドを使用するスクリプトには、次のスコープの 1 つ以上による承認が必要です。

  • https://www.googleapis.com/auth/script.container.ui

showSidebar(userInterface)

ユーザーのエディタに、カスタムのクライアントサイド コンテンツを含むサイドバーが開きます。この方法では、サイドバーが開いている間、サーバーサイド スクリプトは停止されません。サーバーサイド スクリプトと通信するには、クライアントサイド コンポーネントが HtmlServicegoogle.script API を使用して非同期コールバックを行う必要があります。サイドバーをプログラムで閉じるには、HtmlService ウェブアプリのクライアントサイドで google.script.host.close() を呼び出します。詳しくは、ダイアログとサイドバーのガイドをご覧ください。

サイドバーは、環境で左から右の言語を使用しているユーザーの場合はエディタの右側に、右から左の言語を使用しているユーザーの場合はエディタの左側に表示されます。スクリプトによって表示されるサイドバーはすべて、幅 300 ピクセルです。

// Display a sidebar with custom HtmlService content.
const htmlOutput = HtmlService
                       .createHtmlOutput(
                           '<p>A change of speed, a change of style...</p>',
                           )
                       .setTitle('My add-on');
SpreadsheetApp.getUi().showSidebar(htmlOutput);

パラメータ

名前説明
userInterfaceObject表示するインターフェースを表す HtmlOutput

承認

このメソッドを使用するスクリプトには、次のスコープの 1 つ以上による承認が必要です。

  • https://www.googleapis.com/auth/script.container.ui

サポート終了のメソッド