Widgets

Un widget es un elemento de la IU que proporciona uno o más de los siguientes elementos:

  • Estructura para otros widgets, como tarjetas y secciones
  • Información para el usuario, como imágenes y texto
  • Posibilidades de acción, como botones, campos de entrada de texto o casillas de verificación

Los conjuntos de widgets que se agregan a las secciones de tarjetas definen la estructura general en la IU del complemento. Los widgets Tienen el mismo aspecto y función tanto en la Web como en los dispositivos móviles. El documentación de referencia se describen varios métodos para crear conjuntos de widgets.

Tipos de widgets

Por lo general, los widgets de complementos se clasifican en tres. grupos: widgets estructurales, widgets informativos y widgets de interacción del usuario.

Widgets estructurales

Los widgets estructurales proporcionan contenedores y organización para los demás widgets. que se usa en la IU.

  • Conjunto de botones: A colección de uno o más botones de texto o imagen, agrupados en una fila horizontal.
  • Tarjeta: Un solo contexto tarjeta que contiene una o más secciones de tarjetas. Tú defines cómo los usuarios pueden entre las tarjetas mediante la configuración navegación de tarjetas.
  • Encabezado de la tarjeta: El encabezado de una tarjeta determinada. Los encabezados de las tarjetas pueden tener títulos, subtítulos y una imagen. Acciones de la tarjeta y las acciones universales aparecen en el el encabezado de la tarjeta si el complemento los usa.
  • Sección de tarjeta: A recopilado un grupo de widgets, dividido de las demás secciones de la tarjeta por una horizontal y, opcionalmente, un encabezado de sección. Cada tarjeta debe tener al menos una sección de tarjeta. No puedes agregar tarjetas o encabezados a una tarjeta sección.

Widgets estructurales

Además de estos widgets estructurales básicos, en un el complemento de Google Workspace que puedes usar El servicio de tarjetas para crear estructuras que se superpongan con la tarjeta actual: pies de página fijos y tarjetas visibles:

Puedes agregar una fila fija de botones en la parte inferior de la tarjeta. Esta fila no se mueve ni se desplaza con el resto del contenido de la tarjeta.

Ejemplo de widget de pie de página fijo

Lo siguiente el extracto de código muestra cómo definir un pie de página fijo de ejemplo y agregarlo a una tarjeta:

var fixedFooter = CardService.newFixedFooter()
    .setPrimaryButton(
        CardService.newTextButton()
            .setText("Primary")
            .setOpenLink(CardService.newOpenLink()
                .setUrl("https://www.google.com")))
    .setSecondaryButton(
        CardService.newTextButton()
            .setText("Secondary")
            .setOnClickAction(
                CardService.newAction()
                    .setFunctionName(
                        "secondaryCallback")));

var card = CardService.newCardBuilder()
    // (...)
    .setFixedFooter(fixedFooter)
    .build();

Mostrar tarjeta

Ejemplo de tarjeta de vista previa

Cuando se agrega contenido contextual nuevo se activa mediante una acción del usuario, como abrir una mensaje de Gmail, puedes mostrar el contenido contextual nuevo de inmediato (comportamiento predeterminado) o mostrar una notificación de la tarjeta emergente en la parte inferior de la barra lateral. Si un usuario hace clic en Atrás para volver a tu página principal mientras el activador contextual está activo, aparece una tarjeta de vista previa para ayudar a los usuarios a encontrar la el contenido contextual.

Para mostrar una tarjeta de vista previa cuando hay nuevo contenido contextual disponible, en lugar de mostrar inmediatamente el nuevo contenido contextual, agrega .setDisplayStyle(CardService.DisplayStyle.PEEK) a tu CardBuilder . Una tarjeta de vista previa solo aparece si se devuelve un único objeto de tarjeta con tu activador contextual; De lo contrario, las tarjetas mostradas reemplazarán inmediatamente el tarjeta actual.

Para personalizar el encabezado de la tarjeta de vista previa, agrega el método .setPeekCardHeader() con un CardHeader estándar cuando crees tu tarjeta contextual. De forma predeterminada, el encabezado de una tarjeta contiene solo el nombre del complemento.

Ejemplo de tarjeta de vista personalizada

El siguiente código, basado en el Guía de inicio rápido sobre el complemento de Google Workspace para gatos, notifica a los usuarios sobre contenido contextual nuevo con una tarjeta de presentación y personaliza el encabezado de la tarjeta de vista previa para que se muestre el mensaje de Gmail seleccionado asunto de la conversación.

var peekHeader = CardService.newCardHeader()
    .setTitle('Contextual Cat')
    .setImageUrl('https://www.gstatic.com/images/
        icons/material/system/1x/pets_black_48dp.png')
    .setSubtitle(text);

. . .

var card = CardService.newCardBuilder()
    .setDisplayStyle(CardService.DisplayStyle.PEEK)
    .setPeekCardHeader(peekHeader);

Widgets informativos

Los widgets informativos presentan información al usuario.

  • Imagen: Una imagen indicada mediante una URL alojada y con acceso público que usted proporcione.
  • DecoratedText: A texto cadena de contenido que se puede vincular con otros elementos, como los de la parte superior e inferior etiquetas de texto y una imagen o ícono. Los widgets DecoratedText también pueden incluir una Botón o Widget Switch. Se agregaron interruptores pueden ser un botón de activación o una casilla de verificación. El texto del contenido del widget DecoratedText puede usar Formato HTML; los mejores y las etiquetas de la parte inferior deben usar texto sin formato.
  • Párrafo de texto: A párrafo de texto, que puede incluir Elementos con formato HTML

Widgets informativos

Widgets de interacción del usuario

Los widgets de interacción del usuario permiten que el complemento responda a las acciones realizadas por el usuarios. Puedes configurar estos widgets con respuestas a acciones para mostrar tarjetas diferentes, abrir URLs, mostrar notificaciones, redactar borradores de correos electrónicos o ejecutar otras funciones de Apps Script. Consulta la Cómo crear tarjetas interactivas de más detalles.

  • Acción de la tarjeta: Menú elemento colocado en el menú de la barra de encabezado del complemento. El menú de la barra del encabezado también contener elementos definidos como acciones universales, que aparecen en todas las tarjetas que define el complemento.
  • Selectores de fecha y hora: widgets que permiten a los usuarios seleccionar una fecha, una hora o ambas. Consulta Selectores de fecha y hora a continuación para obtener más información.
  • Botón de imagen: A que usa una imagen en lugar de texto. Puedes usar uno de varios íconos predefinidos o una imagen alojada de forma pública indicada por su URL.
  • Entrada de selección: Un campo de entrada que representa un conjunto de opciones. Widgets de entrada de selección presentarse como casillas de verificación, botones de selección o cuadros de selección desplegables.
  • Interruptor: un botón de activación widget. Solo puedes usar interruptores junto con un DecoratedText. De forma predeterminada se muestran como un interruptor, pero puedes hacer que se muestren como una casilla de verificación en su lugar.
  • Botón de texto: A botón con una etiqueta de texto. Puedes especificar un relleno de color de fondo para el texto. (el predeterminado es transparente). También puedes deshabilitar el botón como según tus necesidades.
  • Entrada de texto: Texto campo de entrada. El widget puede tener texto de título, texto de sugerencia y texto de varias líneas. El widget puede activar acciones cuando cambia el valor del texto.
  • Cuadrícula: una columna de varias columnas de diseño que representa una colección de elementos. Puedes representar elementos con una imagen, título y subtítulo, y una variedad de opciones de personalización, como el borde y recortes.
Widget de acción de la tarjeta Widgets de interacción del usuario

DecoratedText casillas de verificación

Puedes definir un DecoratedText widget que tiene una casilla de verificación adjunta, en lugar de un botón o un botón de activación binario interruptor. Al igual que con los interruptores, el valor de la casilla de verificación se incluye en la objeto de evento de acción que se pasa a Action adjunto a este DecoratedText por el setOnClickAction(action) .

Ejemplo de widget de casilla de verificación de texto decorado

En el siguiente extracto de código, se muestra cómo definir una casilla de verificación DecoratedText que podrás agregar a una tarjeta:

var decoratedText = CardService.newDecoratedText()
    // (...)
    .setSwitch(CardService.newSwitch()
        .setFieldName('form_input_switch_key')
        .setValue('switch_is_on')
        .setControlType(
            CardService.SwitchControlType.CHECK_BOX));

Selectores de fecha y hora

Puedes definir widgets que permitan a los usuarios seleccionar una hora, una fecha o ambas. Puedes usar setOnChangeAction() para asignar una función de controlador de widget a ejecutar cuando cambie el valor del selector.

Ejemplo de tarjeta de vista personalizada

En el siguiente extracto de código, se muestra cómo definir un selector de solo fecha, un selector y un selector de fecha y hora, que luego puedes agregar a una tarjeta:

var dateOnlyPicker = CardService.newDatePicker()
    .setTitle("Enter a date")
    .setFieldName("date_field")
    // Set default value as May 24 2019. Either a
    // number or string is acceptable.
    .setValueInMsSinceEpoch(1558668600000)
    .setOnChangeAction(CardService.newAction()
        .setFunctionName("handleDateChange"));

var timeOnlyPicker = CardService.newTimePicker()
    .setTitle("Enter a time")
    .setFieldName("time_field")
    // Set default value as 23:30.
    .setHours(23)
    .setMinutes(30)
    .setOnChangeAction(CardService.newAction()
        .setFunctionName("handleTimeChange"));

var dateTimePicker = CardService.newDateTimePicker()
    .setTitle("Enter a date and time")
    .setFieldName("date_time_field")
    // Set default value as May 24 2019 03:30 AM UTC.
    // Either a number or string is acceptable.
    .setValueInMsSinceEpoch(1558668600000)
    // EDT time is 4 hours behind UTC.
    .setTimeZoneOffsetInMins(-4 * 60)
    .setOnChangeAction(CardService.newAction()
        .setFunctionName("handleDateTimeChange"));

El siguiente es un ejemplo de una función del controlador del widget del selector de fecha y hora. Esta da formato y registra una cadena que representa la fecha y hora elegida por el usuario en un widget de selector de fecha y hora con el ID “myDateTime PickerWidgetID”:

function handleDateTimeChange(event) {
  var dateTimeInput =
    event.commonEventObject.formInputs["myDateTimePickerWidgetID"];
  var msSinceEpoch = dateTimeInput.msSinceEpoch;
  var hasDate = dateTimeInput.hasDate;
  var hasTime = dateTimeInput.hadTime;

  // The following requires you to configure the add-on to read user locale
  // and timezone.
  // See https://developers.google.com/workspace/add-ons/how-tos/access-user-locale
  var userTimezoneId = event.userTimezone.id;

  // Format and log the date-time selected using the user's timezone.
  var formattedDateTime;
  if (hasDate && hasTime) {
    formattedDateTime = Utilities.formatDate(
      new Date(msSinceEpoch), userTimezoneId, "yyy/MM/dd hh:mm:ss");
  } else if (hasDate) {
    formattedDateTime = Utilities.formatDate(
      new Date(msSinceEpoch), userTimezoneId, "yyy/MM/dd")
      + ", Time unspecified";
  } else if (hasTime) {
    formattedDateTime = "Date unspecified, "
      + Utilities.formatDate(
          new Date(msSinceEpoch), userTimezoneId, "hh:mm a");
  }

  if (formattedDateTime) {
    console.log(formattedDateTime);
  }
}

 

En la siguiente tabla, se muestran ejemplos de las IU de selección del selector en computadoras y dispositivos móviles dispositivos. Cuando se selecciona, el selector de fecha abre una IU de calendario mensual para permitir al usuario seleccionar rápidamente una nueva fecha.

Cuando el usuario elige el selector de hora en dispositivos de escritorio, se abre un menú desplegable con una lista de horas separadas en incrementos de 30 minutos que el usuario puede seleccionar de la imagen de la que se originó. El usuario también puede ingresar un horario específico. En dispositivos móviles, seleccionar un el selector de hora abre el “reloj” integrado en el dispositivo móvil selector de hora.

Computadora de escritorio Dispositivos móviles
ejemplo de selección del selector de fechas ejemplo de selección del selector de fecha para dispositivos móviles
ejemplo de selección del selector de hora ejemplo de selección del selector de horario en dispositivos móviles

Cuadrícula

Muestra elementos en un diseño de varias columnas con el widget de cuadrícula. Cada elemento puede mostrar una imagen, un título y un subtítulo. Usa opciones de configuración adicionales para establece la posición del texto en relación con la imagen en un elemento de cuadrícula.

Puedes configurar un elemento de la cuadrícula con un identificador que se muestra como parámetro. a la acción definida en la cuadrícula.

Ejemplo de widget de cuadrícula

var gridItem = CardService.newGridItem()
  .setIdentifier("item_001")
  .setTitle("Lucian R.")
  .setSubtitle("Chief Information Officer")
  .setImage(imageComponent);

var cropStyle = CardService.newImageCropStyle()
  .setImageCropType(CardService.ImageCropType.RECTANGLE_4_3);

var imageComponent = CardService.newImageComponent()
  .setImageUrl("https://developers.google.com/workspace/
      images/cymbal/people/person1.jpeg")
  .setCropStyle(cropStyle)

var grid = CardService.newGrid()
  .setTitle("Recently viewed")
  .addItem(gridItem)
  .setNumColumns(2)
  .setOnClickAction(CardService.newAction()
    .setFunctionName("handleGridItemClick"));

Formato del texto

Algunos widgets basados en texto pueden admitir el formato HTML de texto simple. Al establecer el contenido de texto de estos widgets, incluye solo las etiquetas HTML correspondientes.

A continuación, se muestran las etiquetas admitidas y su propósito. tabla:

Formato Ejemplo Resultado renderizado
Negrita "This is <b>bold</b>." Este texto está en negrita.
Cursiva "This is <i>italics</i>." Esta es la cursiva.
Subrayar "This is <u>underline</u>." Este texto está subrayado.
Tachado "This is <s>strikethrough</s>." Está tachado.
Color de la fuente "This is <font color=\"#FF0000\">red font</font>." Esta es la fuente roja.
Hipervínculo "This is a <a href=\"https://www.google.com\">hyperlink</a>." Esto es un hipervínculo.
Hora "This is a time format: <time>2023-02-16 15:00</time>." Este es un formato de hora: .
Nueva línea "This is the first line. <br> This is a new line." Esta es la primera línea.
Esta es una línea nueva.