زمان تمرکز، خارج از دفتر، و رویدادهای محل کار را مدیریت کنید

این صفحه نحوه استفاده از API تقویم گوگل برای ایجاد رویدادهایی که وضعیت کاربران تقویم گوگل را نشان می‌دهند، توضیح می‌دهد. رویدادهای وضعیت، موقعیت مکانی کاربران یا کاری که انجام می‌دهند را توصیف می‌کنند، از جمله اینکه آیا در زمان تمرکز، خارج از دفتر یا در حال کار از یک مکان خاص هستند.

در تقویم گوگل، کاربران می‌توانند رویدادهای زمان تمرکز، رویدادهای خارج از دفتر و رویدادهای محل کار را برای نشان دادن وضعیت و موقعیت مکانی سفارشی خود ایجاد کنند. این ویژگی‌ها فقط در تقویم‌های اصلی و برای برخی از کاربران تقویم گوگل در دسترس هستند.

برای جزئیات بیشتر، به «استفاده از زمان تمرکز در تقویم گوگل» و «روشن یا خاموش کردن مکان کار برای کاربران» بروید.

خواندن و فهرست کردن رویدادهای وضعیت تقویم

شما می‌توانید رویدادهای وضعیت تقویم را در منبع Events از API تقویم بخوانید و فهرست کنید.

برای خواندن یک رویداد وضعیت، از متد events.get استفاده کنید و eventId رویداد را مشخص کنید.

برای فهرست کردن رویدادهای وضعیت، از متد events.list استفاده کنید و یک یا چند مقدار زیر را در فیلد eventTypes مشخص کنید:

  • 'focusTime'
  • 'outOfOffice'
  • 'workingLocation'

سپس، در اشیاء Event برگردانده شده، بررسی کنید که فیلد eventType مقدار درخواستی را دارد یا خیر، و برای جزئیات مربوط به وضعیت ایجاد شده توسط کاربر در تقویم گوگل (Google Calendar)، به فیلد مربوطه مراجعه کنید:

مشترک شدن در تغییرات رویدادهای وضعیت

شما می‌توانید در منبع Events از API تقویم، در تغییرات مربوط به رویدادهای وضعیت مشترک شوید.

از متد events.watch استفاده کنید، calendarId تقویمی که می‌خواهید در آن مشترک شوید را مشخص کنید و یک یا چند مقدار زیر را در فیلد eventTypes وارد کنید:

  • 'focusTime'
  • 'outOfOffice'
  • 'workingLocation'

ایجاد و به‌روزرسانی رویدادهای وضعیت تقویم

برای ایجاد یک رویداد وضعیت، شما با استفاده از متد events.insert یک نمونه از منبع Events ایجاد می‌کنید و فیلدهای مورد نیاز برای نوع رویداد را تنظیم می‌کنید.

اگر رویداد وضعیت را با استفاده از متد events.update به‌روزرسانی کنید، رویداد باید فیلدهای مورد نیاز را حفظ کند.

ایجاد زمان تمرکز

برای ایجاد یک رویداد زمان تمرکز:

  • eventType را روی 'focusTime' تنظیم کنید.
  • فیلد focusTimeProperties را اضافه کنید.
  • فیلد transparency را روی 'opaque' تنظیم کنید.
  • فیلدهای start و end رویداد را طوری تنظیم کنید که یک رویداد زمان‌دار باشند (با زمان شروع و پایان مشخص).
    زمان‌های تمرکز نمی‌توانند رویدادهایی باشند که تمام روز را در بر بگیرند.

برای جزئیات ویژگی، به استفاده از زمان تمرکز در تقویم گوگل بروید

ایجاد خارج از دفتر

برای ایجاد یک رویداد خارج از دفتر:

  • eventType را روی 'outOfOffice' تنظیم کنید.
  • فیلد outOfOfficeProperties را هم اضافه کنید.
  • فیلد transparency را روی 'opaque' تنظیم کنید.
  • فیلدهای start و end رویداد را طوری تنظیم کنید که یک رویداد زمان‌دار باشند (با زمان شروع و پایان مشخص).
    رویدادهای خارج از دفتر نمی‌توانند رویدادهای تمام روز باشند.

برای جزئیات ویژگی، به «نمایش در غیاب شما» بروید

ایجاد محل کار

برای ایجاد یک رویداد در محل کار:

  • eventType را روی 'workingLocation' تنظیم کنید.
  • فیلد workingLocationProperties را وارد کنید.
  • فیلد visibility را روی 'public' تنظیم کنید.
  • فیلد transparency را روی 'transparent' تنظیم کنید.
  • فیلدهای start و end رویداد را به صورت زیر تنظیم کنید:

    • یک رویداد زمان‌بندی‌شده (با زمان شروع و پایان مشخص)؛
    • یک رویداد تمام روز (با تاریخ شروع و پایان مشخص) که دقیقاً یک روز را در بر می‌گیرد.

    رویدادهای کاری تمام‌روز نمی‌توانند چندین روز را در بر بگیرند، اما رویدادهای زمان‌بندی‌شده می‌توانند.

فیلدهای زیر اختیاری هستند اما برای بهترین تجربه کاربری هنگام درج officeLocation توصیه می‌شوند:

  • workingLocationProperties.officeLocation.buildingId : این باید با یک buildingId در پایگاه داده منابع سازمان مطابقت داشته باشد. این به کاربران کمک می‌کند تا از تمام ویژگی‌های تقویم، به عنوان مثال پیشنهاد اتاق، بهره‌مند شوند.
  • workingLocationProperties.officeLocation.label : این برچسبی است که در تقویم وب و کلاینت‌های موبایل نشان داده می‌شود. می‌توانید شناسه‌های ساختمان و برچسب‌های ساختمان را با استفاده از متد resources.buildings.list دریافت کنید.

ایجاد و به‌روزرسانی رویدادهای محل کار از طریق نقاط پایانی دسته‌ای پشتیبانی نمی‌شود.

برای جزئیات ویژگی، به «تنظیم ساعات کاری و مکان» و «روشن یا خاموش کردن مکان کاری برای کاربران» بروید.

نحوه نمایش رویدادهای محل کار با همپوشانی

یک کاربر می‌تواند چندین رویداد مربوط به محل کار را همزمان در تقویم خود داشته باشد که با هم همپوشانی دارند، به این معنی که هر زمان معین می‌تواند چندین محل کار برای خود داشته باشد. در شرایطی که فقط یک مکان واحد می‌تواند به کاربر نشان داده شود، باید آن مکان به طور مداوم در چندین برنامه به او نشان داده شود. هنگام انجام این کار، از دستورالعمل‌های زیر برای انتخاب رویدادی که باید نشان داده شود استفاده کنید:

  • رویدادهای زمان‌بندی‌شده بر رویدادهای تمام روز اولویت دارند.
  • رویدادهای منفرد بر رویدادهای تکرارشونده و استثنائات آنها اولویت دارند.
  • رویدادهایی که دیرتر شروع می‌شوند، نسبت به رویدادهایی که زودتر شروع می‌شوند، اولویت دارند.
  • رویدادهایی که مدت زمان کوتاه‌تری دارند، نسبت به رویدادهایی که مدت زمان طولانی‌تری دارند، اولویت دارند.
  • رویدادهایی که اخیراً ایجاد شده‌اند، نسبت به رویدادهایی که قبلاً ایجاد شده‌اند، اولویت دارند.
  • رویدادهایی که تا حدودی همپوشانی دارند باید به صورت دو رویداد متفاوت که هر کدام محل کار خود را دارند، نشان داده شوند.

ایجاد رویدادهای وضعیت در اسکریپت برنامه‌های گوگل

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

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

ایجاد و تنظیم اسکریپت

  1. با رفتن به script.google.com/create یک اسکریپت ایجاد کنید.
  2. در پنل سمت چپ، کنار Services ، روی a service کلیک کنید.
  3. API تقویم گوگل را انتخاب کنید و روی افزودن کلیک کنید.
  4. پس از فعال‌سازی، API در پنل سمت چپ ظاهر می‌شود. متدها و کلاس‌های موجود در API را می‌توان با استفاده از کلمه کلیدی Calendar در ویرایشگر فهرست کرد.

(اختیاری) پروژه Google Cloud را به‌روزرسانی کنید

هر پروژه Google Apps Script یک پروژه Google Cloud مرتبط دارد. اسکریپت شما می‌تواند از پروژه پیش‌فرضی که Google Apps Script به‌طور خودکار ایجاد می‌کند استفاده کند. اگر می‌خواهید از یک پروژه Google Cloud سفارشی استفاده کنید، مراحل زیر را برای به‌روزرسانی پروژه مرتبط با اسکریپت خود انجام دهید.

  1. در سمت چپ ویرایشگر، روی پروژه کلیک کنید.
  2. در زیر پروژه پلتفرم ابری گوگل (GCP) ، روی تغییر پروژه کلیک کنید.
  3. شماره پروژه Google Cloud که در برنامه پیش‌نمایش توسعه‌دهندگان است را وارد کنید و روی «تنظیم پروژه» کلیک کنید.
  4. در سمت چپ، گزینه‌ی Editor انتخاب کنید تا به ویرایشگر کد برگردید.

اضافه کردن کد به اسکریپت

نمونه کد زیر نحوه ایجاد، خواندن و فهرست کردن رویدادهای وضعیت در تقویم اصلی شما را نشان می‌دهد.

  1. کد زیر را در ویرایشگر کد قرار دهید.

    /** Creates a focus time event. */
    function createFocusTime() {
      const event = {
        start: { dateTime: '2023-11-14T10:00:00+01:00' },
        end: { dateTime: '2023-11-14T12:00:00+01:00' },
        eventType: 'focusTime',
        focusTimeProperties: {
          chatStatus: 'doNotDisturb',
          autoDeclineMode: 'declineOnlyNewConflictingInvitations',
          declineMessage: 'Declined because I am in focus time.',
        }
      }
      createEvent(event);
    }
    
    /** Creates an out of office event. */
    function createOutOfOffice() {
      const event = {
        start: { dateTime: '2023-11-15T10:00:00+01:00' },
        end: { dateTime: '2023-11-15T18:00:00+01:00' },
        eventType: 'outOfOffice',
        outOfOfficeProperties: {
          autoDeclineMode: 'declineOnlyNewConflictingInvitations',
          declineMessage: 'Declined because I am on vacation.',
        }
      }
      createEvent(event);
    }
    
    /** Creates a working location event. */
    function createWorkingLocation() {
      const event = {
        start: { date: "2023-06-01" },
        end: { date: "2023-06-02" },
        eventType: "workingLocation",
        visibility: "public",
        transparency: "transparent",
        workingLocationProperties: {
          type: 'customLocation',
          customLocation: { label: "a custom location" },
        }
      }
      createEvent(event);
    }
    
    /**
      * Creates a Calendar event.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert
      */
    function createEvent(event) {
      const calendarId = 'primary';
    
      try {
        var response = Calendar.Events.insert(event, calendarId);
        var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response;
        console.log(event);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Reads the event with the given eventId.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/get
      */
    function readEvent() {
      const calendarId = 'primary';
    
      // Replace with a valid eventId.
      const eventId = "sample-event-id";
    
      try {
        var response = Calendar.Events.get(calendarId, eventId);
        var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response;
        console.log(event);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /** Lists focus time events. */
    function listFocusTimes() {
      listEvents('focusTime');
    }
    
    /** Lists out of office events. */
    function listOutOfOffices() {
      listEvents('outOfOffice');
    }
    
    /** Lists working location events. */
    function listWorkingLocations() {
      listEvents('workingLocation');
    }
    
    /**
      * Lists events with the given event type.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list
      */
    function listEvents(eventType = 'default') {
      const calendarId = 'primary'
    
      // Query parameters for the list request.
      const optionalArgs = {
        eventTypes: [eventType],
        showDeleted: false,
        singleEvents: true,
        timeMax: '2023-04-01T00:00:00+01:00',
        timeMin: '2023-03-27T00:00:00+01:00',
      }
      try {
        var response = Calendar.Events.list(calendarId, optionalArgs);
        response.items.forEach(event =>
          console.log(eventType === 'workingLocation' ? parseWorkingLocation(event) : event));
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Parses working location properties of an event into a string.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events#resource
      */
    function parseWorkingLocation(event) {
      if (event.eventType != "workingLocation") {
        throw new Error("'" + event.summary + "' is not a working location event.");
      }
    
      var location = 'No Location';
      const workingLocation = event.workingLocationProperties;
      if (workingLocation) {
        if (workingLocation.type === 'homeOffice') {
          location = 'Home';
        }
        if (workingLocation.type === 'officeLocation') {
          location = workingLocation.officeLocation.label;
        }
        if (workingLocation.type === 'customLocation') {
          location = workingLocation.customLocation.label;
        }
      }
      return `${event.start.date}: ${location}`;
    }
    

نمونه کد را اجرا کنید

  1. بالای ویرایشگر کد، تابعی را که می‌خواهید اجرا شود از منوی کشویی انتخاب کنید و روی «اجرا» کلیک کنید.
  2. در اولین اجرا، از شما اجازه دسترسی خواسته می‌شود. بررسی کنید و به Apps Script اجازه دهید به تقویم شما دسترسی داشته باشد.
  3. شما می‌توانید نتایج اجرای اسکریپت را در گزارش اجرا که در پایین پنجره ظاهر می‌شود، بررسی کنید.
،

این صفحه نحوه استفاده از API تقویم گوگل برای ایجاد رویدادهایی که وضعیت کاربران تقویم گوگل را نشان می‌دهند، توضیح می‌دهد. رویدادهای وضعیت، موقعیت مکانی کاربران یا کاری که انجام می‌دهند را توصیف می‌کنند، از جمله اینکه آیا در زمان تمرکز، خارج از دفتر یا در حال کار از یک مکان خاص هستند.

در تقویم گوگل، کاربران می‌توانند رویدادهای زمان تمرکز، رویدادهای خارج از دفتر و رویدادهای محل کار را برای نشان دادن وضعیت و موقعیت مکانی سفارشی خود ایجاد کنند. این ویژگی‌ها فقط در تقویم‌های اصلی و برای برخی از کاربران تقویم گوگل در دسترس هستند.

برای جزئیات بیشتر، به «استفاده از زمان تمرکز در تقویم گوگل» و «روشن یا خاموش کردن مکان کار برای کاربران» بروید.

خواندن و فهرست کردن رویدادهای وضعیت تقویم

شما می‌توانید رویدادهای وضعیت تقویم را در منبع Events از API تقویم بخوانید و فهرست کنید.

برای خواندن یک رویداد وضعیت، از متد events.get استفاده کنید و eventId رویداد را مشخص کنید.

برای فهرست کردن رویدادهای وضعیت، از متد events.list استفاده کنید و یک یا چند مقدار زیر را در فیلد eventTypes مشخص کنید:

  • 'focusTime'
  • 'outOfOffice'
  • 'workingLocation'

سپس، در اشیاء Event برگردانده شده، بررسی کنید که فیلد eventType مقدار درخواستی را دارد یا خیر، و برای جزئیات مربوط به وضعیت ایجاد شده توسط کاربر در تقویم گوگل (Google Calendar)، به فیلد مربوطه مراجعه کنید:

مشترک شدن در تغییرات رویدادهای وضعیت

شما می‌توانید در منبع Events از API تقویم، در تغییرات مربوط به رویدادهای وضعیت مشترک شوید.

از متد events.watch استفاده کنید، calendarId تقویمی که می‌خواهید در آن مشترک شوید را مشخص کنید و یک یا چند مقدار زیر را در فیلد eventTypes وارد کنید:

  • 'focusTime'
  • 'outOfOffice'
  • 'workingLocation'

ایجاد و به‌روزرسانی رویدادهای وضعیت تقویم

برای ایجاد یک رویداد وضعیت، شما با استفاده از متد events.insert یک نمونه از منبع Events ایجاد می‌کنید و فیلدهای مورد نیاز برای نوع رویداد را تنظیم می‌کنید.

اگر رویداد وضعیت را با استفاده از متد events.update به‌روزرسانی کنید، رویداد باید فیلدهای مورد نیاز را حفظ کند.

ایجاد زمان تمرکز

برای ایجاد یک رویداد زمان تمرکز:

  • eventType را روی 'focusTime' تنظیم کنید.
  • فیلد focusTimeProperties را اضافه کنید.
  • فیلد transparency را روی 'opaque' تنظیم کنید.
  • فیلدهای start و end رویداد را طوری تنظیم کنید که یک رویداد زمان‌دار باشند (با زمان شروع و پایان مشخص).
    زمان‌های تمرکز نمی‌توانند رویدادهایی باشند که تمام روز را در بر بگیرند.

برای جزئیات ویژگی، به استفاده از زمان تمرکز در تقویم گوگل بروید

ایجاد خارج از دفتر

برای ایجاد یک رویداد خارج از دفتر:

  • eventType را روی 'outOfOffice' تنظیم کنید.
  • فیلد outOfOfficeProperties را هم اضافه کنید.
  • فیلد transparency را روی 'opaque' تنظیم کنید.
  • فیلدهای start و end رویداد را طوری تنظیم کنید که یک رویداد زمان‌دار باشند (با زمان شروع و پایان مشخص).
    رویدادهای خارج از دفتر نمی‌توانند رویدادهای تمام روز باشند.

برای جزئیات ویژگی، به «نمایش در غیاب شما» بروید

ایجاد محل کار

برای ایجاد یک رویداد در محل کار:

  • eventType را روی 'workingLocation' تنظیم کنید.
  • فیلد workingLocationProperties را وارد کنید.
  • فیلد visibility را روی 'public' تنظیم کنید.
  • فیلد transparency را روی 'transparent' تنظیم کنید.
  • فیلدهای start و end رویداد را به صورت زیر تنظیم کنید:

    • یک رویداد زمان‌بندی‌شده (با زمان شروع و پایان مشخص)؛
    • یک رویداد تمام روز (با تاریخ شروع و پایان مشخص) که دقیقاً یک روز را در بر می‌گیرد.

    رویدادهای کاری تمام‌روز نمی‌توانند چندین روز را در بر بگیرند، اما رویدادهای زمان‌بندی‌شده می‌توانند.

فیلدهای زیر اختیاری هستند اما برای بهترین تجربه کاربری هنگام درج officeLocation توصیه می‌شوند:

  • workingLocationProperties.officeLocation.buildingId : این باید با یک buildingId در پایگاه داده منابع سازمان مطابقت داشته باشد. این به کاربران کمک می‌کند تا از تمام ویژگی‌های تقویم، به عنوان مثال پیشنهاد اتاق، بهره‌مند شوند.
  • workingLocationProperties.officeLocation.label : این برچسبی است که در تقویم وب و کلاینت‌های موبایل نشان داده می‌شود. می‌توانید شناسه‌های ساختمان و برچسب‌های ساختمان را با استفاده از متد resources.buildings.list دریافت کنید.

ایجاد و به‌روزرسانی رویدادهای محل کار از طریق نقاط پایانی دسته‌ای پشتیبانی نمی‌شود.

برای جزئیات ویژگی، به «تنظیم ساعات کاری و مکان» و «روشن یا خاموش کردن مکان کاری برای کاربران» بروید.

نحوه نمایش رویدادهای محل کار با همپوشانی

یک کاربر می‌تواند چندین رویداد مربوط به محل کار را همزمان در تقویم خود داشته باشد که با هم همپوشانی دارند، به این معنی که هر زمان معین می‌تواند چندین محل کار برای خود داشته باشد. در شرایطی که فقط یک مکان واحد می‌تواند به کاربر نشان داده شود، باید آن مکان به طور مداوم در چندین برنامه به او نشان داده شود. هنگام انجام این کار، از دستورالعمل‌های زیر برای انتخاب رویدادی که باید نشان داده شود استفاده کنید:

  • رویدادهای زمان‌بندی‌شده بر رویدادهای تمام روز اولویت دارند.
  • رویدادهای منفرد بر رویدادهای تکرارشونده و استثنائات آنها اولویت دارند.
  • رویدادهایی که دیرتر شروع می‌شوند، نسبت به رویدادهایی که زودتر شروع می‌شوند، اولویت دارند.
  • رویدادهایی که مدت زمان کوتاه‌تری دارند، نسبت به رویدادهایی که مدت زمان طولانی‌تری دارند، اولویت دارند.
  • رویدادهایی که اخیراً ایجاد شده‌اند، نسبت به رویدادهایی که قبلاً ایجاد شده‌اند، اولویت دارند.
  • رویدادهایی که تا حدودی همپوشانی دارند باید به صورت دو رویداد متفاوت که هر کدام محل کار خود را دارند، نشان داده شوند.

ایجاد رویدادهای وضعیت در اسکریپت برنامه‌های گوگل

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

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

ایجاد و تنظیم اسکریپت

  1. با رفتن به script.google.com/create یک اسکریپت ایجاد کنید.
  2. در پنل سمت چپ، کنار Services ، روی a service کلیک کنید.
  3. API تقویم گوگل را انتخاب کنید و روی افزودن کلیک کنید.
  4. پس از فعال‌سازی، API در پنل سمت چپ ظاهر می‌شود. متدها و کلاس‌های موجود در API را می‌توان با استفاده از کلمه کلیدی Calendar در ویرایشگر فهرست کرد.

(اختیاری) پروژه Google Cloud را به‌روزرسانی کنید

هر پروژه Google Apps Script یک پروژه Google Cloud مرتبط دارد. اسکریپت شما می‌تواند از پروژه پیش‌فرضی که Google Apps Script به‌طور خودکار ایجاد می‌کند استفاده کند. اگر می‌خواهید از یک پروژه Google Cloud سفارشی استفاده کنید، مراحل زیر را برای به‌روزرسانی پروژه مرتبط با اسکریپت خود انجام دهید.

  1. در سمت چپ ویرایشگر، روی پروژه کلیک کنید.
  2. در زیر پروژه پلتفرم ابری گوگل (GCP) ، روی تغییر پروژه کلیک کنید.
  3. شماره پروژه Google Cloud که در برنامه پیش‌نمایش توسعه‌دهندگان است را وارد کنید و روی «تنظیم پروژه» کلیک کنید.
  4. در سمت چپ، گزینه‌ی Editor انتخاب کنید تا به ویرایشگر کد برگردید.

اضافه کردن کد به اسکریپت

نمونه کد زیر نحوه ایجاد، خواندن و فهرست کردن رویدادهای وضعیت در تقویم اصلی شما را نشان می‌دهد.

  1. کد زیر را در ویرایشگر کد قرار دهید.

    /** Creates a focus time event. */
    function createFocusTime() {
      const event = {
        start: { dateTime: '2023-11-14T10:00:00+01:00' },
        end: { dateTime: '2023-11-14T12:00:00+01:00' },
        eventType: 'focusTime',
        focusTimeProperties: {
          chatStatus: 'doNotDisturb',
          autoDeclineMode: 'declineOnlyNewConflictingInvitations',
          declineMessage: 'Declined because I am in focus time.',
        }
      }
      createEvent(event);
    }
    
    /** Creates an out of office event. */
    function createOutOfOffice() {
      const event = {
        start: { dateTime: '2023-11-15T10:00:00+01:00' },
        end: { dateTime: '2023-11-15T18:00:00+01:00' },
        eventType: 'outOfOffice',
        outOfOfficeProperties: {
          autoDeclineMode: 'declineOnlyNewConflictingInvitations',
          declineMessage: 'Declined because I am on vacation.',
        }
      }
      createEvent(event);
    }
    
    /** Creates a working location event. */
    function createWorkingLocation() {
      const event = {
        start: { date: "2023-06-01" },
        end: { date: "2023-06-02" },
        eventType: "workingLocation",
        visibility: "public",
        transparency: "transparent",
        workingLocationProperties: {
          type: 'customLocation',
          customLocation: { label: "a custom location" },
        }
      }
      createEvent(event);
    }
    
    /**
      * Creates a Calendar event.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/insert
      */
    function createEvent(event) {
      const calendarId = 'primary';
    
      try {
        var response = Calendar.Events.insert(event, calendarId);
        var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response;
        console.log(event);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Reads the event with the given eventId.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/get
      */
    function readEvent() {
      const calendarId = 'primary';
    
      // Replace with a valid eventId.
      const eventId = "sample-event-id";
    
      try {
        var response = Calendar.Events.get(calendarId, eventId);
        var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response;
        console.log(event);
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /** Lists focus time events. */
    function listFocusTimes() {
      listEvents('focusTime');
    }
    
    /** Lists out of office events. */
    function listOutOfOffices() {
      listEvents('outOfOffice');
    }
    
    /** Lists working location events. */
    function listWorkingLocations() {
      listEvents('workingLocation');
    }
    
    /**
      * Lists events with the given event type.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events/list
      */
    function listEvents(eventType = 'default') {
      const calendarId = 'primary'
    
      // Query parameters for the list request.
      const optionalArgs = {
        eventTypes: [eventType],
        showDeleted: false,
        singleEvents: true,
        timeMax: '2023-04-01T00:00:00+01:00',
        timeMin: '2023-03-27T00:00:00+01:00',
      }
      try {
        var response = Calendar.Events.list(calendarId, optionalArgs);
        response.items.forEach(event =>
          console.log(eventType === 'workingLocation' ? parseWorkingLocation(event) : event));
      } catch (exception) {
        console.log(exception.message);
      }
    }
    
    /**
      * Parses working location properties of an event into a string.
      * See https://developers.google.com/workspace/calendar/api/v3/reference/events#resource
      */
    function parseWorkingLocation(event) {
      if (event.eventType != "workingLocation") {
        throw new Error("'" + event.summary + "' is not a working location event.");
      }
    
      var location = 'No Location';
      const workingLocation = event.workingLocationProperties;
      if (workingLocation) {
        if (workingLocation.type === 'homeOffice') {
          location = 'Home';
        }
        if (workingLocation.type === 'officeLocation') {
          location = workingLocation.officeLocation.label;
        }
        if (workingLocation.type === 'customLocation') {
          location = workingLocation.customLocation.label;
        }
      }
      return `${event.start.date}: ${location}`;
    }
    

نمونه کد را اجرا کنید

  1. بالای ویرایشگر کد، تابعی را که می‌خواهید اجرا شود از منوی کشویی انتخاب کنید و روی «اجرا» کلیک کنید.
  2. در اولین اجرا، از شما اجازه دسترسی خواسته می‌شود. بررسی کنید و به Apps Script اجازه دهید به تقویم شما دسترسی داشته باشد.
  3. شما می‌توانید نتایج اجرای اسکریپت را در گزارش اجرا که در پایین پنجره ظاهر می‌شود، بررسی کنید.