DataSourceSpecBuilder

The builder for `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec`. To create a specification for certain type, use `as...()` method. To create a new builder, use `https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#newDataSourceSpec()`. To use the specification, see `https://developers.google.com/apps-script/reference/spreadsheet/data-source-table`.


**Only use this class with data that's connected to a database.**


This example shows how to build a BigQuery data source specification.

```javascript
const spec = SpreadsheetApp.newDataSourceSpec()
                 .asBigQuery()
                 .setProjectId('big_query_project')
                 .setRawQuery('select @FIELD from table limit @LIMIT')
                 .setParameterFromCell('FIELD', 'Sheet1!A1')
                 .setParameterFromCell('LIMIT', 'namedRangeCell')
                 .build();
```

This example shows how to build a Looker data source specification. It returns a `https://developers.google.com/apps-script/reference/spreadsheet/looker-data-source-spec` object after using `build()`.

```javascript
const spec = SpreadsheetApp.newDataSourceSpec()
                 .asLooker()
                 .setInstanceUrl('https://looker_instance_url.com')
                 .setModelName('model_name')
                 .setExploreName('explore_name')
                 .build();
```

### Methods

| Method | Return type | Brief description |
|---|---|---|
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#asBigQuery()` | `https://developers.google.com/apps-script/reference/spreadsheet/big-query-data-source-spec-builder` | Gets the builder for BigQuery data source. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#asLooker()` | `https://developers.google.com/apps-script/reference/spreadsheet/looker-data-source-spec-builder` | Gets the builder for Looker data source. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#build()` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec` | Builds a data source specification from the settings in this builder. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#copy()` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` | Creates a `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` based on this data source's settings. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#getParameters()` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-parameter` | Gets the parameters of the data source. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#getType()` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-type` | Gets the type of the data source. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#removeAllParameters()` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` | Removes all the parameters. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#removeParameter(String)` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` | Removes the specified parameter. |
| `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#setParameterFromCell(String,String)` | `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` | Adds a parameter, or if the parameter with the name exists, updates its source cell for data source spec builders of type `https://developers.google.com/apps-script/reference/spreadsheet/data-source-type#BIGQUERY`. |

## Detailed documentation

### `asBigQuery()`

Gets the builder for BigQuery data source.

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/big-query-data-source-spec-builder` --- The BigQuery data source specification builder.

*** ** * ** ***

### `asLooker()`

Gets the builder for Looker data source.

```javascript
const spec = SpreadsheetApp.newDataSourceSpec()
                 .asLooker()
                 .setInstanceUrl('https://looker_instance_url.com')
                 .setModelName('model_name')
                 .setExploreName('explore_name')
                 .build();
```

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/looker-data-source-spec-builder` --- The Looker data source specification builder.

*** ** * ** ***

### `build()`

Builds a data source specification from the settings in this builder. Must use `as...()`
to specify a data source type before building.

The following code sample builds a BigQuery DataSource Spec.

```javascript
const bigQueryDataSourceSpec = SpreadsheetApp.newDataSourceSpec().asBigQuery();
// TODO(developer): Replace with the required dataset, project and table IDs.
bigQueryDataSourceSpec.setDatasetId('my data set id');
bigQueryDataSourceSpec.setProjectId('my project id');
bigQueryDataSourceSpec.setTableId('my table id');

bigQueryDataSourceSpec.build();
```

The following code sample builds a Looker DataSource Spec.

```javascript
const lookerDataSourceSpecBuilder =
    SpreadsheetApp.newDataSourceSpec().asLooker();
const lookerSpec = lookerDataSourceSpecBuilder.setExploreName('my explore name')
                       .setInstanceUrl('my instance url')
                       .setModelName('my model name')
                       .build();
```

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec` --- The data source specification.

*** ** * ** ***

### `copy()`

Creates a `https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` based on this data source's settings.

```javascript
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl(
    'https://docs.google.com/spreadsheets/d/abc123456/edit',
);
const spec = ss.getDataSources()[0].getSpec();

const newSpec = spec.copy();
```

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` --- The builder.

*** ** * ** ***

### `getParameters()`

Gets the parameters of the data source.

```javascript
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl(
    'https://docs.google.com/spreadsheets/d/abc123456/edit',
);
const spec = ss.getDataSources()[0].getSpec();
const parameters = spec.getParameters();
```

This method is only available for BigQuery data sources.

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-parameter` --- The parameter list.

*** ** * ** ***

### `getType()`

Gets the type of the data source.

```javascript
// TODO(developer): Replace the URL with your own.
const ss = SpreadsheetApp.openByUrl(
    'https://docs.google.com/spreadsheets/d/abc123456/edit',
);
const spec = ss.getDataSources()[0].getSpec();
const type = spec.getType();
```

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-type` --- The data source type.

*** ** * ** ***

### `removeAllParameters()`

Removes all the parameters.

```javascript
const specBuilder = SpreadsheetApp.newDataSourceSpec();
specBuilder.removeAllParameters();
```

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` --- The builder, for chaining.

*** ** * ** ***

### `removeParameter(parameterName)`

Removes the specified parameter.

```javascript
const specBuilder = SpreadsheetApp.newDataSourceSpec();
specBuilder.removeParameter('x');
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `parameterName` | `String` | The name of the parameter to remove. |

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` --- The builder, for chaining.

*** ** * ** ***

### `setParameterFromCell(parameterName, sourceCell)`

Adds a parameter, or if the parameter with the name exists, updates its source cell for data
source spec builders of type `https://developers.google.com/apps-script/reference/spreadsheet/data-source-type#BIGQUERY`.

This method is only available for BigQuery data sources.

```javascript
const specBuilder = SpreadsheetApp.newDataSourceSpec().asBigQuery();
specBuilder.setParameterFromCell('x', 'A1');
const bigQuerySpec = specBuilder.build();
```

#### Parameters

| Name | Type | Description |
|---|---|---|
| `parameterName` | `String` | The parameter name. |
| `sourceCell` | `String` | The source cell, as specified in A1 notation. |

#### Return


`https://developers.google.com/apps-script/reference/spreadsheet/data-source-spec-builder#` --- The builder, for chaining.