שירות מתקדם של Google Workspace Event

שירות Google Workspace Events המתקדם מאפשר להשתמש ב-Google Workspace Events API ב-Apps Script. באמצעות ה-API הזה אפשר להירשם למשאבים של Google Workspace כדי לקבל עדכונים על אירועים רלוונטיים שמעניינים אתכם. אירועים מייצגים שינויים במשאבים, למשל כאשר משאבים נוצרים, מתעדכנים או נמחקים.

דרישות מוקדמות

  • פרויקט Apps Script שמשתמש בפרויקט Google Cloud רגיל במקום בפרויקט ברירת המחדל שנוצר באופן אוטומטי על ידי Apps Script.
  • נושא Pub/Sub שנוצר באותו פרויקט ב-Google Cloud כדי לקבל אירועי מינויים. במאמר יצירה של נושא Pub/Sub והרשמה אליו מוסבר איך יוצרים נושא Pub/Sub.
  • כדי להירשם לאירועים ב-Chat, צריך להגדיר אפליקציית Google Chat בדף ההגדרות של Chat API במסוף Google Cloud. במאמר יצירת אפליקציה ל-Google Chat באמצעות Apps Script מוסבר איך יוצרים אפליקציה ל-Google Chat.
  • היקפי ההרשאה הנדרשים שנוספו לקובץ appsscript.json של פרויקט Apps Script. ההיקפים הנדרשים תלויים בסוגים של המשאבים והאירועים שאליהם מתייחסים המינויים. פרטים נוספים זמינים במאמר בחירת היקפי הרשאה ל-Google Workspace Events API. לדוגמה:

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

חומרי עזר

מידע נוסף על השירות הזה זמין במסמכי העזרה של Google Workspace Events API. כמו כל השירותים המתקדמים ב-Apps Script, גם בשירות Google Workspace Events נעשה שימוש באותם אובייקטים, שיטות ופרמטרים כמו ב-API הציבורי.

קוד לדוגמה

הדוגמאות האלה מראות איך לבצע פעולות נפוצות ב-Google Workspace Events API באמצעות השירות המתקדם.

יצירת מינוי

כדי ליצור מינוי למשאב ב-Google Workspace, מוסיפים את הפונקציה הבאה לקוד של פרויקט 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);
  }
}

הצגת רשימה של מינויים

כדי להציג רשימה של מינויים שסוננו לפי סוגי אירועים ומשאבי יעד, מוסיפים את הפונקציה הבאה לקוד של פרויקט 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);
  }
}

אחזור של מינוי

כדי לקבל מידע על מינוי, מוסיפים את הפונקציה הבאה לקוד של הפרויקט ב-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);
  }
}

עדכון המינוי

כדי לעדכן או לחדש מינוי, מוסיפים את הפונקציה הבאה לקוד של פרויקט 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);
  }
}

הפעלה מחדש של המינוי

כדי להפעיל מחדש מינוי, מוסיפים את הפונקציה הבאה לקוד של פרויקט 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);
  }
}

מחיקת מינוי

כדי למחוק מינוי, מוסיפים את הפונקציה הבאה לקוד של הפרויקט ב-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);
  }
}

פעולת אחזור

רוב השיטות של Google Workspace Events API מחזירות פעולה ממושכת. כדי לבדוק את סטטוס הפעולה, אפשר להשתמש בשיטה operations.get().

כדי לקבל מידע על פעולה, מוסיפים את הפונקציה הבאה לקוד של הפרויקט ב-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);
  }
}

כדי לקבל את שם הפעולה, משתמשים בערך בשדה name שמוחזר מאחד מה-methods של Google Workspace Events API, כמו subscriptions.create() או subscriptions.patch().