Author: api.rpropper
Date: Thu May 10 15:15:33 2007
New Revision: 144

Added:
   trunk/clients/cs/samples/spreadsheets/spreadsheetdemo.cs

Log:

added new spreadsheet demo app



Added: trunk/clients/cs/samples/spreadsheets/spreadsheetdemo.cs
==============================================================================
--- (empty file)
+++ trunk/clients/cs/samples/spreadsheets/spreadsheetdemo.cs    Thu May 10 
15:15:33 2007
@@ -0,0 +1,366 @@
+using System;
+using System.Collections;
+using System.Text;
+using Google.GData.Client;
+using Google.GData.Extensions;
+using Google.GData.Spreadsheets;
+
+namespace Spreadsheets
+{
+    /// <summary>
+    /// SpreadsheetDemo is a simple console-based application
+    /// to demonstrate the operations supported by the Google
+    /// Spreadsheets Data API.  It requires authentication in
+    /// the form of your Google Docs & Spreadsheets username
+    /// and password, and performs a number of operations on
+    /// a worksheet of your choice.
+    /// </summary>
+    class SpreadsheetDemo
+    {
+        private static string userName, password;
+        private static ArrayList allWorksheets = new ArrayList();
+
+        /// <summary>
+        /// Prints a list of all worksheets in the specified spreadsheet.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the spreadsheet whose worksheets are to be 
retrieved</param>
+        private static void PrintAllWorksheets(SpreadsheetsService service,
+            SpreadsheetEntry entry)
+        {
+            AtomLink link = 
entry.Links.FindService(GDataSpreadsheetsNameTable.WorksheetRel, null);
+
+            WorksheetQuery query = new WorksheetQuery(link.HRef.ToString());
+            WorksheetFeed feed = service.Query(query);
+
+            Console.WriteLine("Worksheets in " + entry.Title.Text + ":");
+            foreach (WorksheetEntry worksheet in feed.Entries)
+            {
+                allWorksheets.Add(worksheet);
+                Console.WriteLine("  " + worksheet.Title.Text);
+            }
+            Console.WriteLine();
+        }
+
+        /// <summary>
+        /// Prints a list of all the user's spreadsheets, and the
+        /// list of worksheets that each spreadsheet contains.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        private static void 
PrintAllSpreadsheetsAndWorksheets(SpreadsheetsService service)
+        {
+            SpreadsheetQuery query = new SpreadsheetQuery();
+            SpreadsheetFeed feed = service.Query(query);
+
+            Console.WriteLine("Your spreadsheets:");
+            foreach (SpreadsheetEntry entry in feed.Entries)
+            {
+                Console.WriteLine("Spreadsheet: {0}", entry.Title.Text);
+                PrintAllWorksheets(service, entry);
+            }
+        }
+
+        /// <summary>
+        /// Retrieves and prints a list feed of the specified worksheet.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the worksheet to retrieve</param>
+        /// <param name="reverseRows">true if the rows in the worksheet should
+        /// be reversed when returned from the server</param>
+        private static void RetrieveListFeed(SpreadsheetsService service, 
WorksheetEntry entry,
+            bool reverseRows)
+        {
+            AtomLink listFeedLink = 
entry.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null);
+
+            Console.WriteLine();
+            Console.WriteLine("This worksheet's list feed URL is:");
+            Console.WriteLine(listFeedLink.HRef);
+
+            ListQuery query = new ListQuery(listFeedLink.HRef.ToString());
+            if (reverseRows)
+            {
+                query.OrderByPosition = true;
+                query.Reverse = true;
+            }
+            ListFeed feed = service.Query(query);
+
+            Console.WriteLine();
+            Console.WriteLine("Worksheet has {0} rows:", feed.Entries.Count);
+            foreach (ListEntry worksheetRow in feed.Entries)
+            {
+                ListEntry.CustomElementCollection elements = 
worksheetRow.Elements;
+                foreach (ListEntry.Custom element in elements) {
+                    Console.Write(element.Value + "\t");
+                }
+                Console.WriteLine();
+            }
+        }
+
+        /// <summary>
+        /// Executes a structured query against the list feed of
+        /// the specified worksheet.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the worksheet to query</param>
+        /// <param name="queryText">the structured query</param>
+        private static void StructuredQuery(SpreadsheetsService service, 
WorksheetEntry entry,
+            string queryText)
+        {
+            AtomLink listFeedLink = 
entry.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null);
+
+            ListQuery query = new ListQuery(listFeedLink.HRef.ToString());
+            query.SpreadsheetQuery = queryText;
+            ListFeed feed = service.Query(query);
+
+            Console.WriteLine();
+            Console.WriteLine("{0} rows matched your query:", 
feed.Entries.Count);
+            foreach (ListEntry worksheetRow in feed.Entries)
+            {
+                ListEntry.CustomElementCollection elements = 
worksheetRow.Elements;
+                foreach (ListEntry.Custom element in elements)
+                {
+                    Console.Write(element.Value + "\t");
+                }
+                Console.WriteLine();
+            }
+        }
+
+        /// <summary>
+        /// Inserts a new row in the specified worksheet.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the worksheet into which the row will be 
inserted</param>
+        /// <returns>the inserted ListEntry object, representing the new 
row</returns>
+        private static ListEntry InsertRow(SpreadsheetsService service, 
WorksheetEntry entry)
+        {
+            AtomLink listFeedLink = 
entry.Links.FindService(GDataSpreadsheetsNameTable.ListRel, null);
+
+            ListQuery query = new ListQuery(listFeedLink.HRef.ToString());
+            ListFeed feed = service.Query(query);
+
+            ListEntry firstRow = feed.Entries[0] as ListEntry;
+            ListEntry newRow = new ListEntry();
+
+            Console.WriteLine();
+            Console.WriteLine("Inserting a new row...");
+            foreach (ListEntry.Custom element in firstRow.Elements)
+                {
+                Console.Write("Enter the value of column \"{0}\": ", 
element.LocalName);
+                String elementValue = Console.ReadLine();
+
+                ListEntry.Custom curElement = new ListEntry.Custom();
+                curElement.LocalName = element.LocalName;
+                curElement.Value = elementValue;
+
+                newRow.Elements.Add(curElement);
+            }
+
+            ListEntry insertedRow = feed.Insert(newRow) as ListEntry;
+            Console.WriteLine("Successfully inserted new row: \"{0}\"",
+                insertedRow.Content.Content);
+
+            return insertedRow;
+        }
+
+        /// <summary>
+        /// Updates the value of a cell in a single worksheet row.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the ListEntry representing the row to 
update</param>
+        /// <returns>the updated ListEntry object</returns>
+        private static ListEntry UpdateRow(SpreadsheetsService service, 
ListEntry entry)
+        {
+            ListEntry.Custom firstColumn = entry.Elements[0];
+
+            Console.WriteLine();
+            Console.Write("Enter a new value for \"{0}\" (currently \"{1}\"): 
",
+                firstColumn.LocalName, firstColumn.Value);
+            String newValue = Console.ReadLine();
+
+            firstColumn.Value = newValue;
+
+            ListEntry updatedRow = entry.Update() as ListEntry;
+
+            Console.WriteLine("Successfully updated \"{0}\": \"{1}\"",
+                updatedRow.Elements[0].LocalName, 
updatedRow.Elements[0].Value);
+
+            return updatedRow;
+        }
+
+        /// <summary>
+        /// Demonstrates retrieving and printing the cell feed for a
+        /// worksheet.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the worksheet whose cell feed is to be 
retrieved</param>
+        private static void RetrieveCellFeed(SpreadsheetsService service, 
WorksheetEntry entry)
+        {
+            AtomLink cellFeedLink = 
entry.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null);
+
+            Console.WriteLine();
+            Console.WriteLine("This worksheet's cells feed URL is:");
+            Console.WriteLine(cellFeedLink.HRef);
+
+            CellQuery query = new CellQuery(cellFeedLink.HRef.ToString());
+            CellFeed feed = service.Query(query);
+
+            Console.WriteLine();
+            Console.WriteLine("Cells in this worksheet:");
+            foreach (CellEntry curCell in feed.Entries)
+            {
+                Console.WriteLine("Row {0}, column {1}: {2}", curCell.Cell.Row,
+                    curCell.Cell.Column, curCell.Cell.Value);
+            }
+        }
+
+        /// <summary>
+        /// Performs a cell range query on the specified worksheet to
+        /// retrieve only the cells in the first column.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the worksheet to retrieve</param>
+        private static void CellRangeQuery(SpreadsheetsService service, 
WorksheetEntry entry)
+        {
+            AtomLink cellFeedLink = 
entry.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null);
+
+            CellQuery query = new CellQuery(cellFeedLink.HRef.ToString());
+            query.MinimumColumn = 1;
+            query.MaximumColumn = 1;
+            query.MinimumRow = 2;
+
+            CellFeed feed = service.Query(query);
+            Console.WriteLine();
+            Console.WriteLine("Cells in column 1:");
+            foreach (CellEntry curCell in feed.Entries)
+            {
+                Console.WriteLine("Row {0}: {1}", curCell.Cell.Row, 
curCell.Cell.Value);
+            }
+        }
+
+        /// <summary>
+        /// Updates a single cell in the specified worksheet.
+        /// </summary>
+        /// <param name="service">an authenticated SpreadsheetsService 
object</param>
+        /// <param name="entry">the worksheet to update</param>
+        private static void UpdateCell(SpreadsheetsService service, 
WorksheetEntry entry)
+        {
+            AtomLink cellFeedLink = 
entry.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null);
+            CellQuery query = new CellQuery(cellFeedLink.HRef.ToString());
+            Console.WriteLine();
+
+            Console.Write("Row of cell to update? ");
+            string row = Console.ReadLine();
+
+            Console.Write("Column of cell to update? ");
+            string column = Console.ReadLine();
+
+            query.MinimumRow = query.MaximumRow = uint.Parse(row);
+            query.MinimumColumn = query.MaximumColumn = uint.Parse(column);
+
+            CellFeed feed = service.Query(query);
+            CellEntry cell = feed.Entries[0] as CellEntry;
+
+            Console.WriteLine();
+            Console.WriteLine("Current cell value: {0}", cell.Cell.Value);
+            Console.Write("Enter a new value: ");
+            string newValue = Console.ReadLine();
+
+            cell.Cell.InputValue = newValue;
+            AtomEntry updatedCell = cell.Update();
+
+            Console.WriteLine("Successfully updated cell: {0}", 
updatedCell.Content.Content);
+        }
+
+        /// <summary>
+        /// Creates a new SpreadsheetsService with the user's specified
+        /// authentication credentials and runs all of the Spreadsheets
+        /// operations above.
+        /// </summary>
+        private static void RunSample()
+        {
+            SpreadsheetsService service = new 
SpreadsheetsService("exampleCo-exampleApp-1");
+            service.setUserCredentials(userName, password);
+
+            // Demonstrate printing all spreadsheets and worksheets.
+            PrintAllSpreadsheetsAndWorksheets(service);
+
+            // Demonstrate retrieving the list feed for a single worksheet,
+            // with the rows (ordered by position) reversed.
+            int userChoice = GetUserWorksheetChoice();
+            WorksheetEntry entry = allWorksheets[userChoice] as WorksheetEntry;
+
+            RetrieveListFeed(service, entry, true);
+
+            // Demonstrate sending a structured query.
+            Console.Write("Enter a structured query to execute: ");
+            string queryText = Console.ReadLine();
+            StructuredQuery(service, entry, queryText);
+
+            // Demonstrate inserting a new row in the worksheet.
+            ListEntry insertedEntry = InsertRow(service, entry);
+
+            // Demonstrate updating the inserted row.
+            UpdateRow(service, insertedEntry);
+
+            // Demonstrate deleting the entry.
+            insertedEntry.Delete();
+
+            // Demonstrate retrieving a cell feed for a worksheet.
+            RetrieveCellFeed(service, entry);
+
+            // Demonstrate a cell range query.
+            CellRangeQuery(service, entry);
+
+            // Demonstrate updating a single cell.
+            UpdateCell(service, entry);
+        }
+
+        /// <summary>
+        /// Prompts the user for a number representing one of their
+        /// worksheets; this worksheet will then be used to demonstrate
+        /// the various Spreadsheets operations above.
+        /// </summary>
+        /// <returns>the number of the worksheet chosen by the user</returns>
+        private static int GetUserWorksheetChoice()
+        {
+            Console.WriteLine("Select the worksheet on which to demonstrate");
+            Console.WriteLine("add/edit/delete operations by entering its 
number:");
+            Console.WriteLine();
+            for (int i = 0; i < allWorksheets.Count; i++)
+            {
+                WorksheetEntry entry = allWorksheets[i] as WorksheetEntry;
+                Console.WriteLine("{0}: {1}", i + 1, entry.Title.Text);
+            }
+
+            Console.WriteLine();
+            Console.Write("Your choice: ");
+            String userResponse = Console.ReadLine();
+
+            return int.Parse(userResponse) - 1;
+        }
+
+        /// <summary>
+        /// Program entry point.
+        /// </summary>
+        /// <param name="args">the username and password used to log
+        /// in to Google Docs & Spreadsheets.  For example:
+        /// 
+        /// SpreadsheetDemo [EMAIL PROTECTED] mypassword
+        /// </param>
+        static void Main(string[] args)
+        {
+            if (args.Length < 2)
+            {
+                Console.Error.WriteLine("Syntax: SpreadsheetDemo <username> 
<password>");
+                return;
+            }
+            else
+            {
+                userName = args[0];
+                password = args[1];
+
+                RunSample();
+            }
+        }
+    }
+}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Data API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to