سرویس رویدادهای Google Workspace پیشرفته

سرویس رویدادهای پیشرفته Google Workspace به شما امکان می‌دهد از API رویدادهای Google Workspace در Apps Script استفاده کنید. این API به شما امکان می‌دهد در منابع Google Workspace مشترک شوید تا رویدادهای مرتبط مورد علاقه خود را دریافت کنید. رویدادها نشان‌دهنده تغییرات در منابع هستند، مانند زمانی که منابع ایجاد، به‌روزرسانی یا حذف می‌شوند.

پیش‌نیازها

  • یک پروژه Apps Script که از یک پروژه استاندارد Google Cloud به جای پروژه پیش‌فرض ایجاد شده به صورت خودکار توسط Apps Script استفاده می‌کند.
  • یک موضوع Pub/Sub که در همان پروژه Google Cloud برای دریافت رویدادهای اشتراک ایجاد شده است. برای ایجاد یک موضوع Pub/Sub، به بخش «ایجاد و اشتراک در یک موضوع Pub/Sub» مراجعه کنید.
  • برای اشتراک در رویدادهای چت، باید یک برنامه گوگل چت در صفحه پیکربندی API چت در کنسول گوگل کلود پیکربندی کرده باشید. برای ایجاد یک برنامه گوگل چت، به بخش «ساخت یک برنامه گوگل چت با Apps Script» مراجعه کنید.
  • حوزه‌های مجوزدهی لازم به فایل appsscript.json پروژه Apps Script اضافه شده‌اند. حوزه‌های لازم به انواع منابع و رویدادهای هدف اشتراک‌ها بستگی دارند. برای جزئیات بیشتر، به حوزه‌های API رویدادهای فضای کاری گوگل (Choose Google Workspace Events API scopes ) مراجعه کنید. برای مثال:

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

مرجع

برای اطلاعات بیشتر در مورد این سرویس، به مستندات مرجع Google Workspace Events API مراجعه کنید. مانند تمام سرویس‌های پیشرفته در Apps Script، سرویس Google Workspace Events از همان اشیاء، متدها و پارامترهای API عمومی استفاده می‌کند.

کد نمونه

این نمونه‌ها به شما نشان می‌دهند که چگونه می‌توانید اقدامات رایج API رویدادهای Google Workspace را با استفاده از سرویس پیشرفته انجام دهید.

ایجاد اشتراک

برای ایجاد اشتراک در یک منبع Google Workspace، تابع زیر را به کد پروژه Apps Script اضافه کنید:

پیشرفته/رویدادها.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 اضافه کنید:

پیشرفته/رویدادها.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 اضافه کنید:

پیشرفته/رویدادها.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 اضافه کنید:

پیشرفته/رویدادها.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 اضافه کنید:

پیشرفته/رویدادها.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 اضافه کنید:

پیشرفته/رویدادها.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);
  }
}

عملیات را دریافت کنید

اکثر متدهای API رویدادهای فضای کاری گوگل، یک عملیات طولانی مدت را برمی‌گردانند. برای تعیین وضعیت عملیات، می‌توانید از متد operations.get() استفاده کنید.

برای دریافت اطلاعات مربوط به یک عملیات، تابع زیر را به کد پروژه Apps Script اضافه کنید:

پیشرفته/رویدادها.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 از یکی از متدهای Google Workspace Events API برگردانده شده است، مانند subscriptions.create() یا subscriptions.patch() استفاده کنید.