Os scripts vinculados ao Google Docs, Sheets ou Forms podem mostrar vários tipos de elementos da interface do usuário, como alertas e solicitações pré-criados, além de caixas de diálogo e barras laterais que contêm páginas personalizadas de serviço de HTML. Normalmente, esses elementos são abertos em itens de menu. Nos Formulários Google, os elementos da interface do usuário são visíveis apenas para um editor que abre o formulário para modificá-lo, não para um usuário que abre o formulário para responder.
Caixas de diálogo de alerta
Um alerta é uma caixa de diálogo predefinida que é aberta em um editor do Documentos,
Planilhas, Apresentações ou Formulários Google. Ele
mostra uma mensagem e um botão "OK". Um título e botões alternativos são
opcionais. É semelhante a chamar
window.alert()
no JavaScript do lado do cliente em um navegador da Web.
Os alertas suspendem o script do lado do servidor enquanto a caixa de diálogo está aberta. O script é retomado depois que o usuário fecha a caixa de diálogo, mas as conexões do JDBC não persistem durante a suspensão.
Como mostrado no exemplo a seguir, os apps Documentos, Formulários,
Apresentações e Planilhas Google usam o método
Ui.alert()
, que está disponível
em três variantes. Para substituir o botão "OK" padrão, transmita um valor da
enumeração Ui.ButtonSet
como o argumento
buttons
. Para avaliar em qual botão o usuário clicou, compare o valor de retorno
de alert()
com o tipo enumerado Ui.Button
.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show alert", "showAlert")
.addToUi();
}
function showAlert() {
var ui = SpreadsheetApp.getUi(); // Same variations.
var result = ui.alert(
"Please confirm",
"Are you sure you want to continue?",
ui.ButtonSet.YES_NO,
);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
ui.alert("Confirmation received.");
} else {
// User clicked "No" or X in the title bar.
ui.alert("Permission denied.");
}
}
Caixas de diálogo de comando
Uma solicitação é uma caixa de diálogo predefinida que é aberta em um editor do Documentos,
Planilhas, Apresentações ou Formulários Google. Ele
mostra uma mensagem, um campo de entrada de texto e um botão "OK". Um título e
botões alternativos são opcionais. É semelhante a chamar
window.prompt()
no JavaScript do lado do cliente em um navegador da Web.
O comando suspende o script do lado do servidor enquanto a caixa de diálogo está aberta. O script é retomado depois que o usuário fecha a caixa de diálogo, mas as conexões do JDBC não persistem durante a suspensão.
Como mostrado no exemplo a seguir, os apps Documentos, Formulários, Apresentações e Planilhas Google usam o método
Ui.prompt()
, que está
disponível em três variantes. Para substituir o botão "OK" padrão, transmita um valor
do tipo enumerado Ui.ButtonSet
como o
argumento buttons
. Para avaliar a resposta do usuário, capture o valor de retorno
de prompt()
e chame
PromptResponse.getResponseText()
para extrair a entrada do usuário e comparar o valor de retorno de
PromptResponse.getSelectedButton()
com o tipo enumerado Ui.Button
.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show prompt", "showPrompt")
.addToUi();
}
function showPrompt() {
var ui = SpreadsheetApp.getUi(); // Same variations.
var result = ui.prompt(
"Let's get to know each other!",
"Please enter your name:",
ui.ButtonSet.OK_CANCEL,
);
// Process the user's response.
var button = result.getSelectedButton();
var text = result.getResponseText();
if (button == ui.Button.OK) {
// User clicked "OK".
ui.alert("Your name is " + text + ".");
} else if (button == ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert("I didn't get your name.");
} else if (button == ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert("You closed the dialog.");
}
}
Caixas de diálogo personalizadas
Uma caixa de diálogo personalizada pode mostrar uma interface de usuário de serviço HTML em um editor do Documentos, Planilhas, Apresentações ou Formulários Google.
As caixas de diálogo personalizadas não suspendem o script do lado do servidor enquanto a caixa de diálogo está aberta.
O componente do lado do cliente pode fazer chamadas assíncronas para o script do lado do servidor
usando a API google.script
para
interfaces de serviço HTML.
A caixa de diálogo pode ser fechada chamando
google.script.host.close()
no lado do cliente de uma interface de serviço HTML. A caixa de diálogo não pode ser fechada por
outras interfaces, apenas pelo usuário ou por ela mesma.
Como mostrado no exemplo a seguir, os apps Documentos, Formulários,
Apresentações e Planilhas Google usam o método
Ui.showModalDialog()
para abrir a caixa de diálogo.
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show dialog', 'showDialog') .addToUi(); } function showDialog() { var html = HtmlService.createHtmlOutputFromFile('Page') .setWidth(400) .setHeight(300); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(html, 'My custom dialog'); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
Barras laterais personalizadas
Uma barra lateral pode mostrar uma interface do usuário de serviço de HTML em um editor do Documentos, Formulários, Apresentações e Planilhas Google.
As barras laterais não suspendem o script do lado do servidor enquanto a caixa de diálogo está aberta. O
componente do lado do cliente pode fazer chamadas assíncronas para o script do lado do servidor
usando a API google.script
para
interfaces de serviço HTML.
A barra lateral pode ser fechada chamando
google.script.host.close()
no lado do cliente de uma interface de serviço HTML. A barra lateral não pode ser fechada por
outras interfaces, apenas pelo usuário ou por ela mesma.
Como mostrado no exemplo abaixo, o Documentos, Formulários, Apresentações e Planilhas Google usam o método
Ui.showSidebar()
para abrir
a barra lateral.
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function showSidebar() { var html = HtmlService.createHtmlOutputFromFile('Page') .setTitle('My custom sidebar'); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showSidebar(html); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
Caixas de diálogo de abertura de arquivos
O Google Picker é uma API JavaScript que permite que os usuários selecionem ou façam upload de arquivos do Google Drive. A biblioteca Google Picker pode ser usada no serviço HTML para criar uma caixa de diálogo personalizada que permite que os usuários selecionem arquivos existentes ou façam upload de novos e transmitam essa seleção de volta ao script para uso futuro.
Requisitos
Há vários requisitos para usar o Google Picker com o Apps Script.
Configure seu ambiente para o Google Picker.
Seu projeto de script precisa usar um projeto padrão do Google Cloud.
O manifesto do projeto do Apps Script precisa especificar os escopos de autorização exigidos pela API Google Picker para que
ScriptApp.getOAuthToken()
retorne o token correto paraPickerBuilder.setOauthtoken()
.A chave de API definida em
PickerBuilder.setDeveloperKey()
pode ser restrita ao Apps Script. Em Restrições do aplicativo, siga estas etapas:- Selecione Referenciadores HTTP (sites da Web).
- Em Restrições de sites, clique em Adicionar um item.
- Clique em Referenciador de cliques e insira
*.google.com
. - Adicione outro item e insira
*.googleusercontent.com
como o referente. - Clique em Concluído.
É necessário chamar
PickerBuilder.setOrigin(google.script.host.origin)
.
Exemplo
O exemplo a seguir mostra o Google Picker no Apps Script.