Googleスプレッドシートには、単一のシートとしていくつかの情報があります。 Googleの認証情報とスプレッドシートのアドレスを提供することにより、.NETからこの情報を読み取る方法はありますか。 Google Data APIを使用することは可能ですか?最終的には、DataTableのGoogleスプレッドシートから情報を取得する必要があります。どうすればいいですか?誰かがそれを試みた場合、plsはいくつかの情報を共有します。
。Netユーザーガイド によると:
。NETクライアントライブラリ をダウンロードします。
これらのusingステートメントを追加します。
using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.Spreadsheets;
認証する:
SpreadsheetsService myService = new SpreadsheetsService("exampleCo-exampleApp-1");
myService.setUserCredentials("[email protected]", "mypassword");
スプレッドシートのリストを取得します。
SpreadsheetQuery query = new SpreadsheetQuery();
SpreadsheetFeed feed = myService.Query(query);
Console.WriteLine("Your spreadsheets: ");
foreach (SpreadsheetEntry entry in feed.Entries)
{
Console.WriteLine(entry.Title.Text);
}
既に取得したSpreadsheetEntryを指定すると、次のようにして、このスプレッドシート内のすべてのワークシートのリストを取得できます。
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);
}
そして、セルベースのフィードを取得します:
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);
}
簡単なラッパーを作成しました 周り Googleの.Netクライアントライブラリ で、強く型付けされたレコードタイプを持つ、よりシンプルなデータベースのようなインターフェイスを公開します。次にサンプルコードを示します。
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);
グーグルの 構造化クエリ演算子 に変換するLINQプロバイダーもあります。
var q = from r in table.AsQueryable()
where r.IntProp > -1000 && r.StringProp == "hello"
orderby r.IntProp
select r;
(2016年6月から11月)質問とその回答は次のように古くなっています:1) GData APIs は、Google APIの前世代です。すべてのGData APIが非推奨になっているわけではありませんが、 すべての最新のGoogle API do not use Google Data Protocol ; 2) 新しいGoogle Sheets API v4 (GDataでもない)があります。
ここから先は、 。NET用Google APIクライアントライブラリ を取得し、最新の シートAPI を使用する必要があります。これは、以前のAPIよりもはるかに強力で柔軟です。ここに C#コードサンプル があります。 Sheets APIの.NETリファレンスドキュメント および 。NET Google APIクライアントライブラリ開発者ガイド も確認してください。
Python(もしそうなら、それは擬似コードのふりをするだけです;))にアレルギーがない場合は、APIを使用する、少し長く、より「実世界」の例を使用したビデオをいくつか作成しました必要に応じて、C#から学習し、C#に移行できます。
あなたが求めていることをいくつかの方法で行うことができます:
GoogleのスプレッドシートC#ライブラリ(Tacoman667の回答)を使用して、それぞれが名前と値のペアのリストを持つ行のリスト(Googleの用語ではListEntry)を返すことができるListFeedを取得します。 GoogleスプレッドシートAPI( http://code.google.com/apis/spreadsheets/code.html )ドキュメントには、十分な情報があります。始めました。
Google視覚化APIを使用して、より洗練された(ほぼSQLに似た)クエリを送信し、必要な行/列のみを取得できます。
スプレッドシートのコンテンツはAtomフィードとして返されるため、XPathまたはSAX解析を使用してリストフィードのコンテンツを抽出できます。この方法で実行する例があります(Javaと私は怖いけどJavascriptのみ) http://gqlx.twyst.co.za .
http://code.google.com/apis/gdata/articles/dotnet_client_lib.html
これで開始できます。私は最近それで遊んでいませんが、しばらく前に非常に古いバージョンをダウンロードしましたが、かなり安定しているように見えました。これはVisual Studio 2008にも更新されているので、ドキュメントをチェックしてください!
このために、Google CodeにはいくつかのC#SDK /ツールキットがあると確信しています。 this one を見つけましたが、他にもあるかもしれないので、ブラウズしてみる価値はあります。
2017年3月24日にMarcos Placonaによって作成されたこのTwilioブログページは役に立つかもしれません。
Google.Api.Sheets.v4 および OAuth2 を参照します。