Actions de l'agenda

Les objets Action vous permettent de créer un comportement interactif dans les modules complémentaires Google Workspace. Elles définissent ce qui se passe lorsqu'un utilisateur interagit avec un widget (par exemple, un bouton) dans l'interface utilisateur du module complémentaire.

Une action est associée à un widget donné à l'aide d'une fonction de gestionnaire de widgets, qui définit également la condition qui déclenche l'action. Lorsqu'elle est déclenchée, l'action exécute une fonction de rappel désignée. La fonction de rappel reçoit un objet d'événement qui contient des informations sur les interactions côté client de l'utilisateur. Vous devez mettre en œuvre la fonction de rappel et faire en sorte qu'elle renvoie un objet de réponse spécifique.

Par exemple, supposons que vous souhaitiez qu'un bouton génère et affiche une nouvelle fiche lorsque l'utilisateur clique dessus. Pour ce faire, vous devez créer un widget de bouton et utiliser la fonction de gestionnaire de widgets de bouton setOnClickAction(action) pour définir un Action de création de cartes. L'élément Action que vous définissez spécifie une fonction de rappel Apps Script qui s'exécute lorsque l'utilisateur clique sur le bouton. Dans ce cas, implémentez la fonction de rappel pour créer la carte de votre choix et renvoyer un objet ActionResponse. L'objet de réponse indique au module complémentaire d'afficher la fiche créée par la fonction de rappel.

Cette page décrit les actions de widget spécifiques à Agenda que vous pouvez inclure dans votre module complémentaire.

Interactions avec Agenda

Les modules complémentaires Google Workspace qui étendent Agenda peuvent inclure quelques actions de widget spécifiques à Agenda. Ces actions nécessitent la fonction de rappel associée pour renvoyer des objets de réponse spécialisés:

Tentative d'action La fonction de rappel doit renvoyer
Ajouter des participants CalendarEventActionResponse
Configurer les données de conférence CalendarEventActionResponse
Ajouter des pièces jointes CalendarEventActionResponse

Pour utiliser ces actions de widget et ces objets de réponse, toutes les conditions suivantes doivent être remplies:

  • L'action est déclenchée lorsque l'utilisateur a ouvert un événement d'agenda.
  • Le champ du fichier manifeste addOns.calendar.currentEventAccess du module complémentaire est défini sur WRITE ou READ_WRITE.
  • Le module complémentaire inclut le champ d'application de l'agenda https://www.googleapis.com/auth/calendar.addons.current.event.write.

De plus, les modifications apportées par la fonction de rappel d'action ne sont pas enregistrées tant que l'utilisateur n'a pas enregistré l'événement Agenda.

Ajouter des participants avec une fonction de rappel

L'exemple suivant montre comment créer un bouton permettant d'ajouter un participant spécifique à un événement Agenda en cours de modification:

  /**
   * 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();
  }

Définir des données de conférence avec une fonction de rappel

Cette action définit les données de conférence pour l'événement ouvert. Pour ces données de conférence, vous devez spécifier l'ID de solution de conférence, car l'action n'a pas été déclenchée lorsque l'utilisateur sélectionne la solution souhaitée.

L'exemple suivant montre comment créer un bouton qui définit les données de conférence pour un événement en cours de modification:

  /**
   * 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();
  }

Ajouter des pièces jointes avec une fonction de rappel

L'exemple suivant montre comment créer un bouton permettant d'ajouter une pièce jointe à un événement d'agenda en cours de modification:

  /**
   * 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();
  }

Définir l'icône de pièce jointe

L'icône de pièce jointe doit être hébergée sur l'infrastructure de Google. Pour en savoir plus, consultez la section Fournir des icônes de pièce jointe.