Service avancé des événements Google Workspace

Le service Advanced Google Workspace Events vous permet d'utiliser l'API Google Workspace Events dans Apps Script. Cette API vous permet de vous abonner aux ressources Google Workspace afin de recevoir les événements pertinents qui vous intéressent. Les événements représentent des modifications apportées aux ressources, telles que la création, la mise à jour ou la suppression de ressources.

Prérequis

  • Un projet Apps Script utilisant un projet Google Cloud standard au lieu du projet par défaut créé automatiquement par Apps Script.
  • Un sujet Pub/Sub créé dans le même projet Google Cloud pour recevoir les événements d'abonnement. Pour créer un sujet Pub/Sub, consultez la page Créer un sujet Pub/Sub et s'y abonner.
  • Pour vous abonner aux événements Chat, une application Google Chat doit être configurée sur la page de configuration de l'API Chat dans la console Google Cloud. Pour créer une application Google Chat, consultez Créer une application Google Chat avec Apps Script.
  • Les champs d'application des autorisations nécessaires doivent être ajoutés au fichier appsscript.json du projet Apps Script. Les champs d'application nécessaires dépendent des types de ressources et d'événements cibles des abonnements. Pour en savoir plus, consultez Choisir les champs d'application de l'API Google Workspace Events. Exemple :

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.readonly"
    ]
    

Reference

Pour en savoir plus sur ce service, consultez la documentation de référence de l'API Google Workspace Events. Comme tous les services avancés d'Apps Script, le service Google Workspace Events utilise les mêmes objets, méthodes et paramètres que l'API publique.

Exemple de code

Ces exemples vous montrent comment effectuer des actions courantes de l'API Google Workspace Events à l'aide du service avancé.

Créer un abonnement

Pour créer un abonnement à une ressource Google Workspace, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Creates a subscription to receive events about a Google Workspace resource.
 * For a list of supported resources and event types, see the
 * [Google Workspace Events API Overview](https://developers.google.com/workspace/events#supported-events).
 * For additional information, see the
 * [subscriptions.create](https://developers.google.com/workspace/events/reference/rest/v1/subscriptions/create)
 * method reference.
 * @param {!string} targetResource The full resource name of the Google Workspace resource to subscribe to.
 * @param {!string|!Array<string>} eventTypes The types of events to receive about the resource.
 * @param {!string} pubsubTopic The resource name of the Pub/Sub topic that receives events from the subscription.
 */
function createSubscription(targetResource, eventTypes, pubsubTopic) {
  try {
    const operation = WorkspaceEvents.Subscriptions.create({
      targetResource: targetResource,
      eventTypes: eventTypes,
      notificationEndpoint: {
        pubsubTopic: pubsubTopic,
      },
    });
    console.log(operation);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to create subscription with error %s', err.message);
  }
}

Répertorier les abonnements

Pour répertorier les abonnements filtrés par type d'événement et par ressource cible, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Lists subscriptions created by the calling app filtered by one or more event types and optionally by a target resource.
 * For additional information, see the
 * [subscriptions.list](https://developers.google.com/workspace/events/reference/rest/v1/subscriptions/list)
 * method reference.
 * @param {!string} filter The query filter.
 */
function listSubscriptions(filter) {
  try {
    const response = WorkspaceEvents.Subscriptions.list({ filter });
    console.log(response);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to list subscriptions with error %s', err.message);
  }
}

Obtenir l'abonnement

Pour obtenir des informations sur un abonnement, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Gets details about a subscription.
 * For additional information, see the
 * [subscriptions.get](https://developers.google.com/workspace/events/reference/rest/v1/subscriptions/get)
 * method reference.
 * @param {!string} name The resource name of the subscription.
 */
function getSubscription(name) {
  try {
    const subscription = WorkspaceEvents.Subscriptions.get(name);
    console.log(subscription);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to get subscription with error %s', err.message);
  }
}

Mettre à jour l'abonnement

Pour mettre à jour ou renouveler un abonnement, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Updates an existing subscription.
 * This can be used to renew a subscription that is about to expire.
 * For additional information, see the
 * [subscriptions.patch](https://developers.google.com/workspace/events/reference/rest/v1/subscriptions/patch)
 * method reference.
 * @param {!string} name The resource name of the subscription.
 */
function patchSubscription(name) {
  try {
    const operation = WorkspaceEvents.Subscriptions.patch({
      // Setting the TTL to 0 seconds extends the subscription to its maximum expiration time.
      ttl: '0s',
    }, name);
    console.log(operation);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to update subscription with error %s', err.message);
  }
}

Réactiver l'abonnement

Pour réactiver un abonnement, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Reactivates a suspended subscription.
 * Before reactivating, you must resolve any errors with the subscription.
 * For additional information, see the
 * [subscriptions.reactivate](https://developers.google.com/workspace/events/reference/rest/v1/subscriptions/reactivate)
 * method reference.
 * @param {!string} name The resource name of the subscription.
 */
function reactivateSubscription(name) {
  try {
    const operation = WorkspaceEvents.Subscriptions.reactivate({}, name);
    console.log(operation);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to reactivate subscription with error %s', err.message);
  }
}

Supprimer l'abonnement

Pour supprimer un abonnement, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Deletes a subscription.
 * For additional information, see the
 * [subscriptions.delete](https://developers.google.com/workspace/events/reference/rest/v1/subscriptions/delete)
 * method reference.
 * @param {!string} name The resource name of the subscription.
 */
function deleteSubscription(name) {
  try {
    const operation = WorkspaceEvents.Subscriptions.remove(name);
    console.log(operation);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to delete subscription with error %s', err.message);
  }
}

Opération Get

La plupart des méthodes de l'API Google Workspace Events renvoient une opération de longue durée. Pour déterminer l'état de l'opération, vous pouvez utiliser la méthode operations.get().

Pour obtenir des informations sur une opération, ajoutez la fonction suivante au code du projet Apps Script:

advanced/events.gs
/**
 * Gets details about an operation returned by one of the methods on the subscription
 * resource of the Google Workspace Events API.
 * For additional information, see the
 * [operations.get](https://developers.google.com/workspace/events/reference/rest/v1/operations/get)
 * method reference.
 * @param {!string} name The resource name of the operation.
 */
function getOperation(name) {
  try {
    const operation = WorkspaceEvents.Operations.get(name);
    console.log(operation);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to get operation with error %s', err.message);
  }
}

Pour obtenir le nom d'une opération, utilisez la valeur du champ name renvoyé par l'une des méthodes de l'API Google Workspace Events, telles que subscriptions.create() ou subscriptions.patch().