Azioni nel calendario

Gli oggetti Action consentono di creare modelli il comportamento dei componenti aggiuntivi di Google Workspace. Definiscono cosa succede quando un utente interagisce con un widget (ad esempio un pulsante) in l'interfaccia utente del componente aggiuntivo.

Viene collegata un'azione a un widget specifico utilizzando un funzione di gestore widget, che definisce anche la condizione che attiva l'azione. Quando viene attivato, esegue un'azione funzione di callback. La funzione di callback viene passata oggetto evento che trasporta informazioni sulle interazioni lato client dell'utente. Devi implementare le funzione callback e fare in modo che restituisca un oggetto di risposta specifico.

Ad esempio, supponi di voler creare un pulsante che crei e mostri una nuova scheda quando selezionato. Per farlo, devi creare un nuovo widget del pulsante e usare quello del pulsante funzione gestore setOnClickAction(action) per impostare la creazione di carte Action. La Action che definisci specifica uno script di Google Apps funzione di callback che viene eseguita quando l'utente fa clic sul pulsante. In questo caso, di implementare la funzione di callback per creare la scheda desiderata e restituire un ActionResponse . L'oggetto response indica al componente aggiuntivo di visualizzare la scheda il callback funzione creata.

In questa pagina vengono descritte le azioni dei widget specifiche di Calendar che puoi includere nel tuo come componente aggiuntivo.

Interazioni con Calendar

Componenti aggiuntivi di Google Workspace che estendono Calendar può includere alcune azioni aggiuntive del widget specifiche di Calendar. Queste azioni richiedono l'azione associata alla funzione di callback per restituire oggetti di risposta specializzati:

Azione tentata La funzione di callback deve restituire
Aggiunta di partecipanti CalendarEventActionResponse
Impostare i dati della conferenza CalendarEventActionResponse
Aggiungere allegati CalendarEventActionResponse

Per utilizzare queste azioni del widget e gli oggetti di risposta, tutte le seguenti azioni deve essere vero:

  • L'azione viene attivata quando l'utente ha un evento di Calendar aperto.
  • La proprietà addOns.calendar.currentEventAccess del componente aggiuntivo Il campo manifest è impostato su WRITE o READ_WRITE.
  • Il componente aggiuntivo include https://www.googleapis.com/auth/calendar.addons.current.event.write Ambito del calendario.

Inoltre, eventuali modifiche apportate dalla funzione di callback dell'azione vengono salvate solo l'utente salva l'evento nel calendario.

Aggiunta di partecipanti con una funzione di callback

L'esempio seguente mostra come creare un pulsante che aggiunga un parametro specifico partecipante a un evento di Calendar in fase di modifica:

  /**
   * Build a simple card with a button that sends a notification.
   * This function is called as part of the eventOpenTrigger that builds
   * a UI when the user opens an event.
   *
   * @param e The event object passed to eventOpenTrigger function.
   * @return {Card}
   */
  function buildSimpleCard(e) {
    var buttonAction = CardService.newAction()
        .setFunctionName('onAddAttendeesButtonClicked');
    var button = CardService.newTextButton()
        .setText('Add new attendee')
        .setOnClickAction(buttonAction);

    // Check the event object to determine if the user can add
    // attendees and disable the button if not.
    if (!e.calendar.capabilities.canAddAttendees) {
      button.setDisabled(true);
    }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Adds attendees to the
   * Calendar event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onAddAttendeesButtonClicked (e) {
    return CardService.newCalendarEventActionResponseBuilder()
        .addAttendees(["aiko@example.com", "malcom@example.com"])
        .build();
  }

Impostare i dati della conferenza con una funzione di callback

Questa azione imposta i dati della conferenza sull'evento aperto. Per i dati di questa conferenza è necessario specificare l'ID della soluzione per conferenze perché l'azione non è stata attivata dalla selezione della soluzione desiderata da parte dell'utente.

L'esempio seguente mostra come creare un pulsante che imposti i dati della conferenza per un evento in fase di modifica:

  /**
   * Build a simple card with a button that sends a notification.
   * This function is called as part of the eventOpenTrigger that builds
   * a UI when the user opens a Calendar event.
   *
   * @param e The event object passed to eventOpenTrigger function.
   * @return {Card}
   */
  function buildSimpleCard(e) {
    var buttonAction = CardService.newAction()
        .setFunctionName('onSaveConferenceOptionsButtonClicked')
        .setParameters(
          {'phone': "1555123467", 'adminEmail': "joyce@example.com"});
    var button = CardService.newTextButton()
        .setText('Add new attendee')
        .setOnClickAction(buttonAction);

    // Check the event object to determine if the user can set
    // conference data and disable the button if not.
    if (!e.calendar.capabilities.canSetConferenceData) {
      button.setDisabled(true);
    }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Sets conference data for the
   * Calendar event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onSaveConferenceOptionsButtonClicked(e) {
    var parameters = e.commonEventObject.parameters;

    // Create an entry point and a conference parameter.
    var phoneEntryPoint = ConferenceDataService.newEntryPoint()
      .setEntryPointType(ConferenceDataService.EntryPointType.PHONE)
      .setUri('tel:' + parameters['phone']);

    var adminEmailParameter = ConferenceDataService.newConferenceParameter()
        .setKey('adminEmail')
        .setValue(parameters['adminEmail']);

    // Create a conference data object to set to this Calendar event.
    var conferenceData = ConferenceDataService.newConferenceDataBuilder()
        .addEntryPoint(phoneEntryPoint)
        .addConferenceParameter(adminEmailParameter)
        .setConferenceSolutionId('myWebScheduledMeeting')
        .build();

    return CardService.newCalendarEventActionResponseBuilder()
        .setConferenceData(conferenceData)
        .build();
  }

Aggiungi allegati con una funzione di callback

L'esempio seguente mostra come creare un pulsante che aggiunga un allegato a un Evento di calendario in fase di modifica:

  /**
   * Build a simple card with a button that creates a new attachment.
   * This function is called as part of the eventAttachmentTrigger that
   * builds a UI when the user goes through the add-attachments flow.
   *
   * @param e The event object passed to eventAttachmentTrigger function.
   * @return {Card}
   */
  function buildSimpleCard(e) {
    var buttonAction = CardService.newAction()
        .setFunctionName('onAddAttachmentButtonClicked');
    var button = CardService.newTextButton()
        .setText('Add a custom attachment')
        .setOnClickAction(buttonAction);

    // Check the event object to determine if the user can add
    // attachments and disable the button if not.
    if (!e.calendar.capabilities.canAddAttachments) {
      button.setDisabled(true);
    }

    // ...continue creating card sections and widgets, then create a Card
    // object to add them to. Return the built Card object.
  }

  /**
   * Callback function for a button action. Adds attachments to the Calendar
   * event being edited.
   *
   * @param {Object} e The action event object.
   * @return {CalendarEventActionResponse}
   */
  function onAddAttachmentButtonClicked(e) {
    return CardService.newCalendarEventActionResponseBuilder()
             .addAttachments([
               CardService.newAttachment()
                 .setResourceUrl("https://example.com/test")
                 .setTitle("Custom attachment")
                 .setMimeType("text/html")
                 .setIconUrl("https://example.com/test.png")
             ])
        .build();
  }

Impostazione dell'icona per gli allegati

L'icona dell'allegato deve essere ospitata sull'infrastruttura di Google. Vedi Fornisci icone degli allegati per maggiori dettagli.