[c#] Google 데이터 API를 사용하여 C #으로 Google 스프레드 시트에 액세스

Google 스프레드 시트에 단일 시트로 일부 정보가 있습니다. Google 자격 증명과 스프레드 시트 주소를 제공하여 .NET에서이 정보를 읽을 수있는 방법이 있습니까? Google 데이터 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);
}


답변

나는 간단한 래퍼 썼다 주위 구글의 닷넷 클라이언트 라이브러리를 , 그것은 노출 간단한 데이터베이스와 같은 강력한 형식의 기록 유형과 인터페이스. 다음은 몇 가지 샘플 코드입니다.

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 년 6 월 -11 월) 질문과 답변은 다음과 같이 구식입니다. 1) GData API 는 이전 세대의 Google API입니다. 모든 GData API가 더 이상 사용되지는 않지만 모든 최신 Google APIGoogle 데이터 프로토콜을 사용 하지 않습니다 . 2) 새로운 Google Sheets API v4 (GData도 아님)가 있습니다.

여기서부터는 .NET 용 Google API 클라이언트 라이브러리 를 가져 와서 이전 API보다 훨씬 강력하고 유연한 최신 Sheets API를 사용해야합니다 . 다음은 시작하는 데 도움이 되는 C # 코드 샘플 입니다. 또한 Sheets API에 대한 .NET 참조 문서.NET Google API 클라이언트 라이브러리 개발자 가이드를 확인 하세요.

Python에 알레르기가없는 경우 (만약 의사 코드 인 척하십시오;)), 필자는 API를 사용하여 배우고 원하는 경우 C #으로 마이그레이션하는 약간 더 길고 “실제”예제로 여러 비디오를 만들었습니다. :


답변

여러 가지 방법으로 요청한 작업을 수행 할 수 있습니다.

  1. Google의 스프레드 시트 C # 라이브러리 (Tacoman667의 답변에서와 같이)를 사용하여 각각 이름-값 쌍 목록이있는 행 목록 (Google 용어의 ListEntry)을 반환 할 수있는 ListFeed를 가져옵니다. Google 스프레드 시트 API ( http://code.google.com/apis/spreadsheets/code.html ) 설명서에는 시작하기에 충분한 정보가 있습니다.

  2. 필요한 행 / 열만 가져 오기 위해보다 정교한 (거의 SQL과 유사) 쿼리를 제출할 수있는 Google 시각화 API를 사용합니다.

  3. 스프레드 시트 콘텐츠는 Atom 피드로 반환되므로 XPath 또는 SAX 구문 분석을 사용하여 목록 피드의 콘텐츠를 추출 할 수 있습니다. http://gqlx.twyst.co.za 에는 이런 식으로 수행하는 예제가 있습니다 (Java 및 Javascript에서만 두렵지 만) .


답변

이를 위해 Google 코드에 C # SDK / 툴킷이있을 것이라고 확신합니다. 내가 찾은 이 하나 , 그러나 그것의 가치가 주위에 찾아보기를 가진, 그래서 다른 사람이있을 수 있습니다.


답변

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

시작해야합니다. 나는 최근에 그것을 가지고 놀지 않았지만 얼마 전에 아주 오래된 버전을 다운로드했는데 꽤 견고 해 보였습니다. 이것은 Visual Studio 2008로 업데이트되었으므로 문서를 확인하십시오!


답변

Marcos Placona가 2017 년 3 월 24 일에 작성한이 Twilio 블로그 페이지가 도움이 될 수 있습니다.

Google 스프레드 시트 및 .NET Core

Google.Api.Sheets.v4OAuth2를 참조 합니다.