Googleスプレッドシートにいくつかの情報が1つのシートとして含まれています。Googleの資格情報とスプレッドシートのアドレスを提供することで、.NETからこの情報を読み取る方法はありますか?Google Data APIを使用することは可能ですか?最終的には、DataTableのGoogleスプレッドシートから情報を取得する必要があります。どうすればできますか?誰かがそれを試みた場合、plsはいくつかの情報を共有します。
Googleスプレッドシートにいくつかの情報が1つのシートとして含まれています。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("jo@gmail.com", "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);
}
exampleCo-exampleApp-1
")の文字列値には何を使用すればよいですか?私がそこに入れたものは重要ですか?ありがとう!
私は、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("you@gmail.com", "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);
googleの構造化クエリ演算子に変換するLINQプロバイダーもあります。
var q = from r in table.AsQueryable()
where r.IntProp > -1000 && r.StringProp == "hello"
orderby r.IntProp
select r;
(2016年11月11日)質問とその回答は次のように古くなっています。1)GData APIは前世代のGoogle APIです。すべてのGData APIが廃止されているわけではありませんが、最新のすべてのGoogle APIはGoogle Data Protocolを使用していません。2)新しいGoogle Sheets API v4(GDataも含まない)があります。
ここから先は、.NET用のGoogle APIクライアントライブラリを入手して、以前のどのAPIよりもはるかに強力で柔軟な最新のSheets APIを使用する必要があります。以下は、開始するのに役立つC#コードサンプルです。Sheets APIの.NETリファレンスドキュメントと.NET Google APIクライアントライブラリ開発者ガイドも確認してください。
Pythonにアレルギーがない場合は(疑似コードであると疑うだけです;))、いくつかのビデオを作成し、必要に応じて、C#に移行して学ぶことができる、APIの使用例を少し長く、より「現実的な」例にまとめました。 :
あなたはいくつかの方法であなたが求めていることをすることができます:
GoogleのスプレッドシートC#ライブラリ(Tacoman667の回答のように)を使用して、それぞれが名前と値のペアのリストを持つ行のリスト(Google用語ではListEntry)を返すことができるListFeedをフェッチします。GoogleスプレッドシートAPI(http://code.google.com/apis/spreadsheets/code.html)のドキュメントには、始めるのに十分な情報が含まれています。
より高度な(ほとんどSQLに似た)クエリを送信して必要な行/列のみをフェッチできるGoogle視覚化APIを使用します。
スプレッドシートのコンテンツはAtomフィードとして返されるため、XPathまたはSAX解析を使用してリストフィードのコンテンツを抽出できます。http://gqlx.twyst.co.zaに、この方法で実行する例があります(私は怖いのですが、JavaとJavascriptのみです)。
http://code.google.com/apis/gdata/articles/dotnet_client_lib.html
これで始められるはずです。最近は使っていませんが、非常に古いバージョンをしばらくダウンロードしたので、かなりしっかりしているように見えました。これもVisual Studio 2008に更新されているので、ドキュメントをチェックしてください!
Marcos Placonaによって2017年3月24日に作成されたこのTwilioブログページが役立つ場合があります。
@Kellyからの最も投票された回答は、@ wescpyが言うように、もはや有効ではありません。ただし、2020-03-03以降は使用するライブラリが使用するため、まったく機能しませんGoogle Sheets v3 API
。
Google Sheets v3 APIは2020年3月3日に廃止されます
https://developers.google.com/sheets/api/v3
これはGoogleによって2019-09-10に発表されました:
https://cloud.google.com/blog/products/g-suite/migrate-your-apps-use-latest-sheets-api
の新しいコードサンプル Google Sheets v4 API
:
に行く
https://developers.google.com/sheets/api/quickstart/dotnet
そして、生成しcredentials.json
ます。次にインストールしますGoogle.Apis.Sheets.v4
NuGetを、次のサンプルを試します。
Unable to parse range: Class Data!A2:E
サンプルコードでエラーが発生しましたが、スプレッドシートではエラーが発生しました。Sheet1!A2:E
しかし、私のシートがそれと名付けられたので、働くように変わりました。も一緒に働いたA2:E
。
using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
namespace SheetsQuickstart
{
class Program
{
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/sheets.googleapis.com-dotnet-quickstart.json
static string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
static string ApplicationName = "Google Sheets API .NET Quickstart";
static void Main(string[] args)
{
UserCredential credential;
using (var stream =
new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
// The file token.json stores the user's access and refresh tokens, and is created
// automatically when the authorization flow completes for the first time.
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define request parameters.
String spreadsheetId = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";
String range = "Class Data!A2:E";
SpreadsheetsResource.ValuesResource.GetRequest request =
service.Spreadsheets.Values.Get(spreadsheetId, range);
// Prints the names and majors of students in a sample spreadsheet:
// https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
ValueRange response = request.Execute();
IList<IList<Object>> values = response.Values;
if (values != null && values.Count > 0)
{
Console.WriteLine("Name, Major");
foreach (var row in values)
{
// Print columns A and E, which correspond to indices 0 and 4.
Console.WriteLine("{0}, {1}", row[0], row[4]);
}
}
else
{
Console.WriteLine("No data found.");
}
Console.Read();
}
}
}