:py:mod:`airflow.providers.google.cloud.transfers.calendar_to_gcs`
==================================================================

.. py:module:: airflow.providers.google.cloud.transfers.calendar_to_gcs


Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.cloud.transfers.calendar_to_gcs.GoogleCalendarToGCSOperator




.. py:class:: GoogleCalendarToGCSOperator(*, destination_bucket, api_version, calendar_id = 'primary', i_cal_uid = None, max_attendees = None, max_results = None, order_by = None, private_extended_property = None, text_search_query = None, shared_extended_property = None, show_deleted = None, show_hidden_invitation = None, single_events = None, sync_token = None, time_max = None, time_min = None, time_zone = None, updated_min = None, destination_path = None, gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Writes Google Calendar data into Google Cloud Storage.

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:GoogleCalendarToGCSOperator`

   :param calendar_id: The Google Calendar ID to interact with.
   :param i_cal_uid: Optional. Specifies event ID in the ``iCalendar`` format in the response.
   :param max_attendees: Optional. If there are more than the specified number of attendees,
       only the participant is returned.
   :param max_results: Optional. Maximum number of events returned on one result page.
       Incomplete pages can be detected by a non-empty ``nextPageToken`` field in the response.
       By default the value is 250 events. The page size can never be larger than 2500 events
   :param order_by: Optional. Acceptable values are ``"startTime"`` or "updated"
   :param private_extended_property: Optional. Extended properties constraint specified as
       ``propertyName=value``. Matches only private properties. This parameter might be repeated
       multiple times to return events that match all given constraints.
   :param text_search_query: Optional. Free text search.
   :param shared_extended_property: Optional. Extended properties constraint specified as
       ``propertyName=value``. Matches only shared properties. This parameter might be repeated
       multiple times to return events that match all given constraints.
   :param show_deleted: Optional. False by default
   :param show_hidden_invitation: Optional. False by default
   :param single_events: Optional. False by default
   :param sync_token: Optional. Token obtained from the ``nextSyncToken`` field returned
   :param time_max: Optional. Upper bound (exclusive) for an event's start time to filter by.
       Default is no filter
   :param time_min: Optional. Lower bound (exclusive) for an event's end time to filter by.
       Default is no filter
   :param time_zone: Optional. Time zone used in response. Default is calendars time zone.
   :param updated_min: Optional. Lower bound for an event's last modification time
   :param destination_bucket: The destination Google Cloud Storage bucket where the
       report should be written to. (templated)
   :param destination_path: The Google Cloud Storage URI array for the object created by the operator.
       For example: ``path/to/my/files``.
   :param gcp_conn_id: The connection ID to use when fetching connection info.
   :param delegate_to: The account to impersonate using domain-wide delegation of authority,
       if any. For this to work, the service account making the request must have
       domain-wide delegation enabled.
   :param impersonation_chain: Optional service account to impersonate using short-term
       credentials, or chained list of accounts required to get the access_token
       of the last account in the list, which will be impersonated in the request.
       If set as a string, the account must grant the originating account
       the Service Account Token Creator IAM role.
       If set as a sequence, the identities from the list must grant
       Service Account Token Creator IAM role to the directly preceding identity, with first
       account from the list granting this role to the originating account (templated).

   .. py:attribute:: template_fields
      :annotation: = ['calendar_id', 'destination_bucket', 'destination_path', 'impersonation_chain']

      

   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.



