### Apache Airflow Provider(s)

google

### Versions of Apache Airflow Providers

_No response_

### Apache Airflow version

2.1.4

### Operating System

Container-Optimized OS with Containerd

### Deployment

Composer

### Deployment details

_No response_

### What happened

I am trying to load some files from GCS to BigQuery. To get the list of files which matches the prefix, I am using the GoogleCloudStorageListOperator which pushes the output to XCOM.

XCOM Push from GoogleCloudStorageListOperator:
['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv']

When I am pulling the list from XCOM to use for BigQuery Load operation, it is getting rendered like:
**[**['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv']**]**

Due to this I am getting the below error in GCSToBigQueryOperator :
Source URI must not contain the ',' character: gs://inbound-bucket/[['file1.csv', 'file2.csv', 'file3.csv', 'file4.csv', 'file5.csv']]

The code I am using can be found below.
_dag = DAG(AIRFLOW_DAG_ID, default_args = default_values, description = "google_operator_test", catchup = False, max_active_runs = 1 ,render_template_as_native_obj=True, schedule_interval = None)
get_gcs_file_list = GoogleCloudStorageListOperator(
	task_id= "get_gcs_file_list_1",
	google_cloud_storage_conn_id = "temp_google_access",
	bucket= "inbound-bucket",
	prefix= source_object_location,
	delimiter= '.csv',
    dag = dag)
#Load the data from GCS to BQ
load_to_bq_stage = GCSToBigQueryOperator(
    task_id= "bqload",
    bigquery_conn_id = "temp_google_access",
    google_cloud_storage_conn_id  = "temp_google_access",
    bucket= "inbound-bucket",
    source_objects= '{{task_instance.xcom_pull(task_ids="get_gcs_file_list_1")}}',
    destination_project_dataset_table= dataset + "." + target_table,
    write_disposition='WRITE_TRUNCATE',
    field_delimiter = '|',
    dag=dag)_

### What you expected to happen

The list should be rendered as is by the GCSToBigQueryOperator.

### How to reproduce

1. Push a list of strings in to XCOM
2. Perform XCOM pull in  source_objects parameter of GCSToBigQueryOperator  like below,
source_objects ='{{task_instance.xcom_pull(task_ids="task_name")}}'
3. Notice that the rendered source_objects have an extra parenthesis added.

### Anything else

There is a validation performed in the operator’s constructor to check whether or not the source_objecst datatype is a list. If is it not a list, then it’s presumed to be a string and wrap it as a list.Because source_objects is a template field, the field value isn’t evaluated until the task runs (aka meaning the value isn’t rendered until the execute() method of the operator).
https://github.com/apache/airflow/blob/6eac2e0807a8be5f39178f079db28ebcd2f83621/airflow/providers/google/cloud/transfers/gcs_to_bigquery.py#L219

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/providers/google/cloud/transfers/gcs_to_bigquery.py
:param schema_fields: If set, the schema field list as defined here:
        https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.load
        Should not be set when source_format is 'DATASTORE_BACKUP'.
        Parameter must be defined if 'schema_object' is null and autodetect is False.
    :type schema_fields: list
    :param schema_object: If set, a GCS object path pointing to a .json file that
        contains the schema for the table. (templated)
        Parameter must be defined if 'schema_fields' is null and autodetect is False.
    :type schema_object: str
    :param source_format: File format to export.
    :type source_format: str
    :param compression: [Optional] The compression type of the data source.
        Possible values include GZIP and NONE.
        The default value is NONE.
        This setting is ignored for Google Cloud Bigtable,
        Google Cloud Datastore backups and Avro formats.
    :type compression: str
    :param create_disposition: The create disposition if the table doesn't exist.
    :type create_disposition: str
    :param skip_leading_rows: Number of rows to skip when loading from a CSV.
    :type skip_leading_rows: int
    :param write_disposition: The write disposition if the table already exists.
    :type write_disposition: str
    :param field_delimiter: The delimiter to use when loading from a CSV.
    :type field_delimiter: str
    :param max_bad_records: The maximum number of bad records that BigQuery can
        ignore when running the job.
    :type max_bad_records: int
    :param quote_character: The value that is used to quote data sections in a CSV file.
    :type quote_character: str