createSpreadsheet method
Future<Spreadsheet>
createSpreadsheet(
- String title, {
- List<
String> worksheetTitles = const <String>['Sheet1'], - ValueRenderOption render = ValueRenderOption.unformattedValue,
- ValueInputOption input = ValueInputOption.userEntered,
Creates a new Spreadsheet
, and returns it.
Requires SheetsApi.SpreadsheetsScope.
It's recommended to save Spreadsheet
id once its created, it also can be
shared with the user by email via method share
of Spreadsheet
.
worksheetTitles
- optional (defaults to ['Sheet1']
), titles of the
worksheets that will be created along with the spreadsheet
render
- determines how values should be rendered in the output.
https://developers.google.com/sheets/api/reference/rest/v4/ValueRenderOption
input
- determines how input data should be interpreted.
https://developers.google.com/sheets/api/reference/rest/v4/ValueInputOption
Throws Exception if GSheets's scopes does not include SpreadsheetsScope. Throws GSheetsException if does not have permission.
Implementation
Future<Spreadsheet> createSpreadsheet(
String title, {
List<String> worksheetTitles = const <String>['Sheet1'],
ValueRenderOption render = ValueRenderOption.unformattedValue,
ValueInputOption input = ValueInputOption.userEntered,
}) async {
final client = await this.client.catchError((_) {
// retry once on error
_client = null;
return this.client;
});
final worksheets = worksheetTitles
.map((title) => {
'properties': {
'title': title,
'sheetType': 'GRID',
'gridProperties': {
'rowCount': defaultRowsCount,
'columnCount': defaultColumnCount,
}
},
})
.toList();
final response = await client.post(
_sheetsEndpoint.toUri(),
body: jsonEncode(
{
'properties': {
'title': title,
},
'sheets': worksheets,
},
),
);
checkResponse(response);
return Spreadsheet._fromJson(
json: jsonDecode(response.body),
client: client,
renderOption: _parseRenderOption(render),
inputOption: _parseInputOption(input),
);
}