/// <summary> /// Create new spreadsheet file for a given google account, and write data inside the speadsheet /// </summary> /// <param name="authorizationTokenId"></param> /// <param name="spreadsheetName"></param> /// <param name="worksheetName"></param> /// <param name="tableData"></param> /// <returns></returns> public async Task <string> CreateNewSpreadsheet(Guid authorizationTokenId, string spreadsheetName, string worksheetName, StandardTableDataCM tableData) { var googleSheetApi = new GoogleSheet(new GoogleIntegration(ObjectFactory.GetInstance <IRestfulServiceClient>()), new GoogleDrive()); var defaultGoogleAuthToken = GetGoogleAuthToken(authorizationTokenId); var spreadsheetId = await googleSheetApi.CreateSpreadsheet(spreadsheetName, defaultGoogleAuthToken); var googleSheets = await googleSheetApi.GetSpreadsheets(defaultGoogleAuthToken); var spreadsheetUri = googleSheets.FirstOrDefault(x => x.Value == spreadsheetName).Key; //create worksheet for this new created spreadsheet var existingWorksheets = await googleSheetApi.GetWorksheets(spreadsheetUri, defaultGoogleAuthToken); var existingWorksheetUri = existingWorksheets.Where(x => string.Equals(x.Value.Trim(), worksheetName, StringComparison.InvariantCultureIgnoreCase)) .Select(x => x.Key).FirstOrDefault(); if (string.IsNullOrEmpty(existingWorksheetUri)) { existingWorksheetUri = await googleSheetApi.CreateWorksheet(spreadsheetUri, defaultGoogleAuthToken, worksheetName); } await googleSheetApi.WriteData(spreadsheetUri, existingWorksheetUri, tableData, defaultGoogleAuthToken); return(spreadsheetId); }