//Post data to Google Docs //Worksheets names within speadsheet have been set to the monitor names //Monitor name will be used to identify worksheet within which to post data. public static bool postDataWorkSheetByMonitor(ExternalSnapshots _externalSnapshots) { IDictionary<string, ListFeed> workSheetList = new Dictionary<string, ListFeed>(); WorksheetFeed wsFeed = spreadSheet.Worksheets; AtomLink listFeedLink1; ListQuery listQuery1; ListFeed listFeed1; try { // loop on worksheets // Fetch the list feed of the worksheet. // The listfeed is required to post data to the worksheet // create collection of key/value pairs where the key is the worksheet name and the value is the listfeed for the worksheet foreach (WorksheetEntry ws in wsFeed.Entries) { listFeedLink1 = ws.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null); listQuery1 = new ListQuery(listFeedLink1.HRef.ToString()); listFeed1 = spreadSheetsService.Query(listQuery1); workSheetList.Add(ws.Title.Text, listFeed1); } //row to post ListEntry row; //loop on the externalSnapshots. //each entry within the reultList will be used to compose a row for posting to the Goolge spreadsheet foreach (ExternalSnapshot externalSnapshot in _externalSnapshots.resultList) { foreach (Data dataToPost in externalSnapshot.data) { row = new ListEntry(); row.Elements.Add(new ListEntry.Custom() { LocalName = "id", Value = dataToPost.id.ToString() }); row.Elements.Add(new ListEntry.Custom() { LocalName = "type", Value = dataToPost.testType }); row.Elements.Add(new ListEntry.Custom() { LocalName = "name", Value = dataToPost.name }); row.Elements.Add(new ListEntry.Custom() { LocalName = "perf", Value = dataToPost.perf.ToString() }); row.Elements.Add(new ListEntry.Custom() { LocalName = "time", Value = dataToPost.time }); row.Elements.Add(new ListEntry.Custom() { LocalName = "status", Value = dataToPost.time }); row.Elements.Add(new ListEntry.Custom() { LocalName = "location", Value = externalSnapshot.locationShortName }); // Send the new row to the Google Spreadsheets API for insertion. row = spreadSheetsService.Insert(workSheetList[dataToPost.name], row); ; } } } catch (Exception _exception) { MessageBox.Show(_exception.Message); return false; } return true; }
private void buttonPostData_Click(object sender, RoutedEventArgs e) { //get data from Monitis account for all the locations from which your services are being monitored externalSnapshots = MonitisService.getExternalSnapshots(locationsUsed.listOfUsedLocationIds); //set column headers GoogleDocs.GoogleSpreadSheetService.setWorkSheetHeadersByWorksheet(); if (GoogleDocs.GoogleSpreadSheetService.postDataWorkSheetByMonitor(externalSnapshots)) { labelStatus.Content = "Posting to Google Spreadsheet completed!"; } else { labelStatus.Content = "Error encountered whilst posting data to Google Spreadsheet!"; } buttonPostData.IsEnabled = false; }
//this methos posts the data to the first workSheet withiin the spreadSheet public static void postDataToSameWorkSheet(ExternalSnapshots _externalSnapshots) { WorksheetFeed wsFeed = spreadSheet.Worksheets; WorksheetEntry worksheet = (WorksheetEntry)wsFeed.Entries[0]; // Define the URL to request the list feed of the worksheet. AtomLink listFeedLink = worksheet.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null); // Fetch the list feed of the worksheet. ListQuery listQuery = new ListQuery(listFeedLink.HRef.ToString()); ListFeed listFeed = spreadSheetsService.Query(listQuery); ListEntry row; foreach (ExternalSnapshot externalSnapshot in _externalSnapshots.resultList) { foreach (Data dataToPost in externalSnapshot.data) { row = new ListEntry(); row.Elements.Add(new ListEntry.Custom() { LocalName = "id", Value = dataToPost.id.ToString() }); row.Elements.Add(new ListEntry.Custom() { LocalName = "type", Value = dataToPost.testType }); row.Elements.Add(new ListEntry.Custom() { LocalName = "name", Value = dataToPost.name }); row.Elements.Add(new ListEntry.Custom() { LocalName = "perf", Value = dataToPost.perf.ToString() }); row.Elements.Add(new ListEntry.Custom() { LocalName = "time", Value = dataToPost.time }); row.Elements.Add(new ListEntry.Custom() { LocalName = "status", Value = dataToPost.time }); row.Elements.Add(new ListEntry.Custom() { LocalName = "location", Value = externalSnapshot.locationShortName }); // Send the new row to the API for insertion. row = spreadSheetsService.Insert(listFeed, row); ; } } }