wake-up-neo.net

Zugriff auf Google Spreadsheets mit C # über die Google Data API

Ich habe einige Informationen in Google Spreadsheets als einzelnes Blatt. Gibt es eine Möglichkeit, wie ich diese Informationen aus .NET lesen kann, indem ich die Google-Anmeldeinformationen und die Tabellenkalkulationsadresse gebe? Ist es möglich, Google Data APIs zu verwenden? Letztendlich muss ich die Informationen aus der Google-Tabelle in einer Datentabelle abrufen. Wie kann ich es tun? Wenn jemand es versucht hat, teilen Sie bitte einige Informationen.

102
blitzkriegz

Nach der . Net-Bedienungsanleitung :

Laden Sie die . NET-Clientbibliothek herunter :

Fügen Sie diese using-Anweisungen hinzu:

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

Authentifizieren:

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

Liste der Tabellen abrufen:

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

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

Bei einem bereits abgerufenen SpreadsheetEntry können Sie eine Liste aller Arbeitsblätter in dieser Tabelle wie folgt abrufen:

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

Und erhalten Sie einen zellenbasierten Feed:

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

Ich habe einen einfachen Wrapper um Googles .Net-Clientbibliothek geschrieben Eine einfachere datenbankähnliche Oberfläche mit stark typisierten Datensatztypen. Hier ist ein Beispielcode:

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

Es gibt auch einen LINQ-Anbieter, der in die strukturierten Abfrageoperatoren von Google übersetzt :

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

(Jun-Nov 2016) Die Frage und ihre Antworten sind jetzt veraltet als: 1) GData APIs sind die vorherige Generation von Google APIs. Obwohl nicht alle GData-APIs veraltet sind, alle neuesten Google-APIs do not use das Google-Datenprotokoll ; und 2) es gibt ein neues Google Sheets API v4 (auch nicht GData).

Wenn Sie fortfahren, müssen Sie die Google APIs-Clientbibliothek für .NET und die neueste Sheets-API verwenden, die viel leistungsfähiger und flexibler ist als alle vorherigen APIs. Hier ist ein C # -Codebeispiel , um Ihnen den Einstieg zu erleichtern. Lesen Sie auch die . NET-Referenzdokumente für die Sheets-API und . NET-Entwicklerhandbuch für die Google APIs-Clientbibliothek .

Wenn Sie nicht allergisch gegen Python (wenn ja, tun Sie einfach so, als wäre es Pseudocode;)) sind, habe ich mehrere Videos mit etwas längeren, realistischeren Beispielen für die Verwendung der API erstellt kann auf Wunsch von C # lernen und auf C # migrieren:

16
wescpy

Sie können das, was Sie verlangen, auf verschiedene Arten tun:

  1. Verwenden der C # -Bibliothek für Tabellenkalkulationen von Google (wie in der Antwort von Tacoman667), um eine ListFeed abzurufen, die eine Liste von Zeilen (ListEntry in Google Parlance) zurückgeben kann, von denen jede eine Liste von Name-Wert-Paaren enthält. Die Dokumentation zur Google-Tabellenkalkulations-API ( http://code.google.com/apis/spreadsheets/code.html ) enthält mehr als genug Informationen, um Ihnen den Einstieg zu erleichtern.

  2. Verwenden Sie die Google-Visualisierungs-API, mit der Sie komplexere (fast wie SQL) Abfragen senden können, um nur die Zeilen/Spalten abzurufen, die Sie benötigen.

  3. Der Inhalt des Arbeitsblatts wird als Atom feeds zurückgegeben, sodass Sie XPath- oder SAX-Analyse verwenden können, um den Inhalt eines Listen-Feeds zu extrahieren. Es gibt ein Beispiel dafür (in Java und Javascript nur, obwohl ich Angst habe) bei http://gqlx.twyst.co.za .

3
tonys

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

Dies sollte Ihnen den Einstieg erleichtern. Ich habe in letzter Zeit nicht damit gespielt, aber ich habe vor einiger Zeit eine sehr alte Version heruntergeladen und sie schien ziemlich solide zu sein. Diese Version wurde ebenfalls auf Visual Studio 2008 aktualisiert. Lesen Sie die Dokumentation!

2
Tacoman667

Ich bin mir ziemlich sicher, dass es dafür einige C # SDKs/Toolkits auf Google Code geben wird. Ich habe dieses gefunden , aber es kann auch andere geben, es lohnt sich also, sich umzuschauen.

2
Steve Haigh

Diese Twilio-Blogseite vom 24. März 2017 von Marcos Placona könnte hilfreich sein.

Google Spreadsheets und .NET Core

Es verweist auf Google.Api.Sheets.v4 und OAuth2 .

2
JohnH