it-swarm.dev

Acessando as planilhas do Google com C # usando a API de dados do Google

Estou tendo algumas informações no Google Spreadsheets como uma única folha. Existe alguma maneira pela qual eu possa ler essas informações do .NET fornecendo as credenciais do Google e o endereço da planilha. É possível usar as APIs de dados do Google. Por fim, preciso obter as informações da planilha do Google em uma DataTable. Como eu posso fazer isso? Se alguém tentou, pls compartilhar algumas informações.

99
blitzkriegz

De acordo com o . Net User Guide :

Faça o download do biblioteca cliente .NET :

Adicione estas instruções usando:

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");

Obtenha uma lista de planilhas:

SpreadsheetQuery query = new SpreadsheetQuery();
SpreadsheetFeed feed = myService.Query(query);

Console.WriteLine("Your spreadsheets: ");
foreach (SpreadsheetEntry entry in feed.Entries)
{
    Console.WriteLine(entry.Title.Text);
}

Com uma SpreadsheetEntry já recuperada, você pode obter uma lista de todas as planilhas nesta planilha da seguinte maneira:

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);
}

E obtenha um feed baseado em célula:

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);
}
173
Kelly

Eu escrevi um wrapper simples around biblioteca do cliente .Net do Google , ele expõe uma interface mais simples do tipo banco de dados, com tipos de registro fortemente tipados. Aqui está um código de amostra:

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);

Há também um provedor de LINQ que se traduz no google operadores de consulta estruturada :

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

(Jun-Nov 2016) A pergunta e suas respostas estão desatualizadas como: 1) APIs GData são a geração anterior de APIs do Google. Embora nem todas as APIs de GData tenham sido descontinuadas, todas as APIs mais recentes do Google do não use o Google Data Protocol ; e 2) há um nova Google Sheets API v4 (também não GData).

Seguindo em frente, você precisa obter a biblioteca cliente de APIs do Google para .NET e usar a mais recente Sheets API , que é muito mais poderosa e flexível do que qualquer API anterior. Aqui está um exemplo de código C # para ajudar você a começar. Verifique também os documentos de referência do .NET para a API do Google Sheets e o guia para desenvolvedores da Biblioteca de clientes das APIs do Google para .NET .

Se você não é alérgico a Python (se você é, apenas finja que é pseudocódigo;)), eu fiz vários vídeos com exemplos um pouco mais "reais" de usar a API que você pode aprender e migre para C #, se desejar:

15
wescpy

Você pode fazer o que você está pedindo de várias maneiras:

  1. Usando a biblioteca C # da planilha do Google (como na resposta de Tacoman667) para buscar um ListFeed que pode retornar uma lista de linhas (ListEntry no jargão do Google), cada uma delas tem uma lista de pares nome-valor. A documentação da API de planilha do Google ( http://code.google.com/apis/spreadsheets/code.html ) tem informações mais do que suficientes para você começar.

  2. Usando a API de visualização do Google, que permite enviar consultas mais sofisticadas (quase como SQL) para buscar apenas as linhas/colunas de que você precisa.

  3. O conteúdo da planilha é retornado como Atom feeds para que você possa usar a análise XPath ou SAX para extrair o conteúdo de um feed de lista. Há um exemplo de como fazer isso (em Java e Javascript somente com medo) em http://gqlx.twyst.co.za .

3
tonys

http://code.google.com/apis/gdata/articles/dotnet_client_lib.html

Isso deve ajudá-lo a começar. Eu não tenho tocado com isso ultimamente, mas eu baixei uma versão muito antiga há algum tempo e parecia bastante sólida. Este também foi atualizado para o Visual Studio 2008. Confira os documentos!

2
Tacoman667

Tenho certeza de que haverá alguns SDKs/kits de ferramentas em C # no Google Code para isso. Eu encontrei este , mas pode haver outros, então vale a pena dar uma olhada.

2
Steve Haigh

Esta página do blog Twilio feita em 24 de março de 2017 por Marcos Placona pode ser útil.

Google Spreadsheets e .NET Core

Referencia Google.Api.Sheets.v4 e OAuth2 .

1
JohnH