:py:mod:`airflow.providers.google.suite.transfers.gcs_to_gdrive`
================================================================

.. py:module:: airflow.providers.google.suite.transfers.gcs_to_gdrive

.. autoapi-nested-parse::

   This module contains a Google Cloud Storage to Google Drive transfer operator.



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

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.google.suite.transfers.gcs_to_gdrive.GCSToGoogleDriveOperator




Attributes
~~~~~~~~~~

.. autoapisummary::

   airflow.providers.google.suite.transfers.gcs_to_gdrive.WILDCARD


.. py:data:: WILDCARD
   :annotation: = *

   

.. py:class:: GCSToGoogleDriveOperator(*, source_bucket, source_object, destination_object = None, move_object = False, gcp_conn_id = 'google_cloud_default', delegate_to = None, impersonation_chain = None, **kwargs)

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

   Copies objects from a Google Cloud Storage service to a Google Drive service, with renaming
   if requested.

   Using this operator requires the following OAuth 2.0 scope:

   .. code-block:: none

       https://www.googleapis.com/auth/drive

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

   :param source_bucket: The source Google Cloud Storage bucket where the object is. (templated)
   :param source_object: The source name of the object to copy in the Google cloud
       storage bucket. (templated)
       You can use only one wildcard for objects (filenames) within your bucket. The wildcard can appear
       inside the object name or at the end of the object name. Appending a wildcard to the bucket name
       is unsupported.
   :param destination_object: The destination name of the object in the destination Google Drive
       service. (templated)
       If a wildcard is supplied in the source_object argument, this is the prefix that will be prepended
       to the final destination objects' paths.
       Note that the source path's part before the wildcard will be removed;
       if it needs to be retained it should be appended to destination_object.
       For example, with prefix ``foo/*`` and destination_object ``blah/``, the file ``foo/baz`` will be
       copied to ``blah/baz``; to retain the prefix write the destination_object as e.g. ``blah/foo``, in
       which case the copied file will be named ``blah/foo/baz``.
   :param move_object: When move object is True, the object is moved instead of copied to the new location.
       This is the equivalent of a mv command as opposed to a cp command.
   :param gcp_conn_id: (Optional) The connection ID used to connect to Google Cloud.
   :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: :Sequence[str] = ['source_bucket', 'source_object', 'destination_object', 'impersonation_chain']

      

   .. py:attribute:: ui_color
      :annotation: = #f0eee4

      

   .. 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.



