web-dev-qa-db-fra.com

Accéder à Google Spreadsheets avec C # à l'aide de Google Data API

J'ai des informations dans Google Spreadsheets sous forme de feuille simple. Existe-t-il un moyen par lequel je puisse lire ces informations à partir de .NET en fournissant les informations d'identification Google et l'adresse de la feuille de calcul. Est-il possible d'utiliser les API Google Data? En fin de compte, je dois obtenir les informations de la feuille de calcul Google dans un DataTable. Comment puis-je le faire? Si quelqu'un l'a essayé, les pls partagent des informations.

102
blitzkriegz

Selon le Guide de l'utilisateur. Net :

Téléchargez le bibliothèque client. NET :

Ajoutez ces instructions using:

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

Authentifier:

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

Obtenez une liste de feuilles de calcul:

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

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

Etant donné un SpreadsheetEntry que vous avez déjà récupéré, vous pouvez obtenir une liste de toutes les feuilles de calcul de cette feuille de calcul comme suit:

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

Et obtenez un flux cellulaire:

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

J'ai écrit un simple wrapper autour de bibliothèque client .Net de Google , il présente une interface plus simple, semblable à une base de données, avec des types d'enregistrement fortement typés. Voici un exemple de code:

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

Il existe également un fournisseur LINQ qui traduit Google opérateurs de requête structurés :

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

(juin-nov. 2016) La question et ses réponses sont maintenant obsolètes en tant que: 1) API GData sont la génération précédente des API Google. Bien que toutes les API GData ne soient pas obsolètes, toutes les dernières API de Google do pas utilisez le protocole de données Google ; et 2) il existe un nouvelle API Google Sheets v4 (également pas GData).

À partir de là, vous devez utiliser la bibliothèque cliente de Google APIs pour .NET et utiliser la dernière version API Sheets , qui est beaucoup plus puissante et flexible que toutes les API précédentes. Voici un exemple de code C # pour vous aider à démarrer. Consultez également = Documents de référence .NET pour l’API Sheets et --- Guide des développeurs .NET pour la bibliothèque client .NET Google APIs .

Si vous n'êtes pas allergique à Python (si vous l'êtes, faites comme si c'était un pseudocode;)), j'ai réalisé plusieurs vidéos avec des exemples un peu plus longs et plus "réels" d'utilisation de l'API. pouvez apprendre et migrer vers C # si vous le souhaitez:

16
wescpy

Vous pouvez faire ce que vous demandez de plusieurs façons:

  1. Utilisation de la bibliothèque C # de la feuille de calcul de Google (comme dans la réponse de Tacoman667) pour extraire un ListFeed qui peut renvoyer une liste de lignes (ListEntry dans le langage de Google) contenant chacune une liste de paires nom-valeur. L'API de la feuille de calcul Google ( http://code.google.com/apis/spreadsheets/code.html ) contient plus que suffisamment d'informations pour vous aider à démarrer.

  2. Utilisation de l'API de visualisation Google, qui vous permet de soumettre des requêtes plus sophistiquées (presque comme SQL) pour extraire uniquement les lignes/colonnes dont vous avez besoin.

  3. Le contenu de la feuille de calcul est renvoyé sous la forme Atom pour que vous puissiez utiliser l'analyse XPath ou SAX pour extraire le contenu d'un flux de liste. Voici un exemple d'utilisation de cette méthode (in Java et Javascript seulement si j'en ai peur) à http://gqlx.twyst.co.za .

3
tonys

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

Cela devrait vous aider à démarrer. Je n'ai pas joué avec ça récemment, mais j'ai téléchargé une version très ancienne il y a quelque temps et cela semblait assez solide. Celui-ci est également mis à jour vers Visual Studio 2008, alors consultez la documentation!

2
Tacoman667

Je suis sûr que Google Code proposera des kits de développement/kits C # SDK/outils. J'ai trouvé celui-ci , mais il y en a peut-être d'autres, ça vaut donc la peine de parcourir les environs.

2
Steve Haigh

Cette page de blog Twilio réalisée le 24 mars 2017 par Marcos Placona peut être utile.

Google Spreadsheets et .NET Core

Il fait référence à Google.Api.Sheets.v4 et OAuth2 .

2
JohnH