예제 #1
0
    def execute(self, context: 'Context'):
        sheet_hook = GSheetsHook(
            gcp_conn_id=self.gcp_conn_id,
            delegate_to=self.delegate_to,
            impersonation_chain=self.impersonation_chain,
        )
        gcs_hook = GCSHook(
            gcp_conn_id=self.gcp_conn_id,
            delegate_to=self.delegate_to,
            impersonation_chain=self.impersonation_chain,
        )

        # Pull data and upload
        destination_array: List[str] = []
        sheet_titles = sheet_hook.get_sheet_titles(
            spreadsheet_id=self.spreadsheet_id, sheet_filter=self.sheet_filter)
        for sheet_range in sheet_titles:
            data = sheet_hook.get_values(spreadsheet_id=self.spreadsheet_id,
                                         range_=sheet_range)
            gcs_path_to_file = self._upload_data(gcs_hook, sheet_hook,
                                                 sheet_range, data)
            destination_array.append(gcs_path_to_file)

        self.xcom_push(context, "destination_objects", destination_array)
        return destination_array
예제 #2
0
    def execute(self, context: Any) -> None:
        sheet_hook = GSheetsHook(
            gcp_conn_id=self.gcp_conn_id,
            delegate_to=self.delegate_to,
            impersonation_chain=self.impersonation_chain,
        )
        gcs_hook = GCSHook(
            gcp_conn_id=self.gcp_conn_id,
            delegate_to=self.delegate_to,
            impersonation_chain=self.impersonation_chain,
        )
        with NamedTemporaryFile("w+") as temp_file:
            # Download data
            gcs_hook.download(
                bucket_name=self.bucket_name,
                object_name=self.object_name,
                filename=temp_file.name,
            )

            # Upload data
            values = list(csv.reader(temp_file))
            sheet_hook.update_values(
                spreadsheet_id=self.spreadsheet_id,
                range_=self.spreadsheet_range,
                values=values,
            )
예제 #3
0
 def execute(self, context: Any):
     hook = GSheetsHook(gcp_conn_id=self.gcp_conn_id,
                        delegate_to=self.delegate_to)
     spreadsheet = hook.create_spreadsheet(spreadsheet=self.spreadsheet)
     self.xcom_push(context, "spreadsheet_id", spreadsheet["spreadsheetId"])
     self.xcom_push(context, "spreadsheet_url",
                    spreadsheet["spreadsheetUrl"])
     return spreadsheet
예제 #4
0
 def execute(self, context: Any) -> Dict[str, Any]:
     hook = GSheetsHook(
         gcp_conn_id=self.gcp_conn_id,
         delegate_to=self.delegate_to,
         impersonation_chain=self.impersonation_chain,
     )
     spreadsheet = hook.create_spreadsheet(spreadsheet=self.spreadsheet)
     self.xcom_push(context, "spreadsheet_id", spreadsheet["spreadsheetId"])
     self.xcom_push(context, "spreadsheet_url", spreadsheet["spreadsheetUrl"])
     return spreadsheet
예제 #5
0
    def execute(self, context: Any) -> None:
        self.log.info("Getting data")
        values = list(self._get_data())

        self.log.info("Connecting to Google")
        sheet_hook = GSheetsHook(
            gcp_conn_id=self.gcp_conn_id,
            delegate_to=self.delegate_to,
            impersonation_chain=self.impersonation_chain,
        )

        self.log.info(f"Uploading data to https://docs.google.com/spreadsheets/d/{self.spreadsheet_id}")

        sheet_hook.update_values(
            spreadsheet_id=self.spreadsheet_id,
            range_=self.spreadsheet_range,
            values=values,
        )
예제 #6
0
 def setUp(self):
     with mock.patch(
             'airflow.providers.google.cloud.hooks.base.CloudBaseHook.__init__',
             new=mock_base_gcp_hook_default_project_id):
         self.hook = GSheetsHook(gcp_conn_id=GCP_CONN_ID)
예제 #7
0
 def setUp(self):
     with mock.patch('airflow.gcp.hooks.base.CloudBaseHook.__init__',
                     new=mock_base_gcp_hook_default_project_id):
         self.hook = GSheetsHook(gcp_conn_id=GCP_CONN_ID,
                                 spreadsheet_id=SPREADHSEET_ID)