spreadsheets sheets programar google example c# google-spreadsheet google-api-dotnet-client google-data-api google-sheets-api

sheets - Accediendo a las hojas de cálculo de Google con C#usando Google Data API



google spreadsheets integration (7)

Tengo cierta información en Google Spreadsheets en una sola hoja. ¿Hay alguna manera de poder leer esta información de .NET al proporcionar las credenciales de google y la dirección de la hoja de cálculo? ¿Es posible usar las API de datos de Google? En última instancia, necesito obtener la información de la hoja de cálculo de Google en una DataTable. ¿Cómo puedo hacerlo? Si alguien lo ha intentado, los pls comparten cierta información.


De acuerdo con la guía de usuario de .NET :

Descargue la biblioteca cliente .NET :

Agregue estas instrucciones de uso:

using Google.GData.Client; using Google.GData.Extensions; using Google.GData.Spreadsheets;

Autenticar:

SpreadsheetsService myService = new SpreadsheetsService("exampleCo-exampleApp-1"); myService.setUserCredentials("[email protected]", "mypassword");

Obtenga una lista de hojas de cálculo:

SpreadsheetQuery query = new SpreadsheetQuery(); SpreadsheetFeed feed = myService.Query(query); Console.WriteLine("Your spreadsheets: "); foreach (SpreadsheetEntry entry in feed.Entries) { Console.WriteLine(entry.Title.Text); }

Dado un SpreadsheetEntry que ya ha recuperado, puede obtener una lista de todas las hojas de trabajo en esta hoja de cálculo de la siguiente manera:

AtomLink link = entry.Links.FindService(GDataSpreadsheetsNameTable.WorksheetRel, null); WorksheetQuery query = new WorksheetQuery(link.HRef.ToString()); WorksheetFeed feed = service.Query(query); foreach (WorksheetEntry worksheet in feed.Entries) { Console.WriteLine(worksheet.Title.Text); }

Y obtén un feed basado en celdas:

AtomLink cellFeedLink = worksheetentry.Links.FindService(GDataSpreadsheetsNameTable.CellRel, null); CellQuery query = new CellQuery(cellFeedLink.HRef.ToString()); CellFeed feed = service.Query(query); 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); }



Estoy bastante seguro de que habrá algunos SDK / toolkits de C # en Google Code para esto. Encontré este , pero puede haber otros, así que vale la pena echar un vistazo.


Puedes hacer lo que estás preguntando de varias maneras:

  1. Utilizando la biblioteca C # de la hoja de cálculo de Google (como en la respuesta de Tacoman667) para obtener un ListFeed que puede devolver una lista de filas (ListEntry en el lenguaje de Google), cada una de las cuales tiene una lista de pares nombre-valor. La documentación de la API de la hoja de cálculo de Google ( http://code.google.com/apis/spreadsheets/code.html ) contiene información más que suficiente para comenzar.

  2. Utilizando la API de visualización de Google, que le permite enviar consultas más sofisticadas (casi como SQL) para obtener solo las filas / columnas que necesita.

  3. Los contenidos de la hoja de cálculo se devuelven como fuentes de Atom para que pueda usar el análisis XPath o SAX para extraer el contenido de un feed de lista. Hay un ejemplo de hacerlo de esta manera (en Java y Javascript solo aunque me temo) en http://gqlx.twyst.co.za .


Escribí un envoltorio simple sobre la biblioteca del cliente .Net de Google , expone una interfaz similar a una base de datos más simple, con tipos de registros fuertemente tipados. Aquí hay un código de muestra:

public class Entity { public int IntProp { get; set; } public string StringProp { get; set; } } var e1 = new Entity { IntProp = 2 }; var e2 = new Entity { StringProp = "hello" }; var client = new DatabaseClient("[email protected]", "password"); const string dbName = "IntegrationTests"; Console.WriteLine("Opening or creating database"); db = client.GetDatabase(dbName) ?? client.CreateDatabase(dbName); // databases are spreadsheets const string tableName = "IntegrationTests"; Console.WriteLine("Opening or creating table"); table = db.GetTable<Entity>(tableName) ?? db.CreateTable<Entity>(tableName); // tables are worksheets table.DeleteAll(); table.Add(e1); table.Add(e2); var r1 = table.Get(1);

También hay un proveedor de LINQ que se traduce a los operadores de consultas estructuradas de google:

var q = from r in table.AsQueryable() where r.IntProp > -1000 && r.StringProp == "hello" orderby r.IntProp select r;



(Jun-Nov 2016) La pregunta y sus respuestas están desactualizadas ya que: 1) Las API de GData son la generación anterior de API de Google. Si bien no todas las API de GData se han desaprobado, todas las últimas API de Google no usan el Protocolo de datos de Google ; y 2) hay una googleappsdeveloper.blogspot.com/2016/05/… (tampoco GData).

De aquí en adelante, necesita obtener la API Client API de Google para .NET y usar la última API Sheets , que es mucho más poderosa y flexible que cualquier API anterior. Aquí hay una muestra del código C # para ayudarlo a comenzar. También consulte los documentos de referencia de .NET para Sheets API y la guía de desarrolladores de .NET Google APIs Client Library .

Si no eres alérgico a Python (si lo eres, solo pretendes que es un seudocódigo), hice varios videos con ejemplos de "uso de API" ligeramente más largos y más "reales" de los que puedes aprender y migrar a C # si lo deseas :