Доступ к таблицам Google с помощью C# с использованием API данных Google

StackOverflow https://stackoverflow.com/questions/725627

Вопрос

У меня есть некоторая информация в таблицах Google в виде одного листа.Есть ли способ прочитать эту информацию из .NET, предоставив учетные данные Google и адрес электронной таблицы.Возможно ли использование API данных Google.В конечном итоге мне нужно получить информацию из электронной таблицы Google в DataTable.Как мне это сделать?Если кто-то пробовал, поделитесь пожалуйста информацией.

Это было полезно?

Решение

Согласно Руководство пользователя .NET:

Загрузите Клиентская библиотека .NET:

Добавьте их, используя операторы:

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

Учитывая уже полученную запись электронной таблицы, вы можете получить список всех листов в этой таблице следующим образом:

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

Другие советы

Я написал простую обертку вокруг Клиентская библиотека .Net Google, он предоставляет более простой интерфейс, подобный базе данных, со строго типизированными типами записей.Вот пример кода:

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

Существует также провайдер LINQ, который переводит на Google. операторы структурированных запросов:

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

(июнь-ноябрь 2016 г.) Вопрос и ответы на него устарели, поскольку:1) API-интерфейсы GData являются предыдущим поколением API Google.Хотя не все API GData устарели, все новейшие API Google делать нет использовать протокол данных Google;и 2) есть новый API Google Таблиц v4 (также не GData).

Двигаясь вперед отсюда, вам нужно получить Клиентская библиотека API Google для .NET и используйте последнюю версию API Таблиц, который намного более мощный и гибкий, чем любой предыдущий API.Вот Пример кода C# чтобы помочь вам начать работу.Также проверьте Справочная документация .NET для API Таблиц и Руководство для разработчиков клиентской библиотеки API .NET Google API.

Если у вас нет аллергии на Python (если да, просто притворитесь, что это псевдокод ;)), я сделал несколько видеороликов с немного более длинными и более «реальными» примерами использования API, на котором вы можете учиться и при желании перейти на C#. :

Вы можете сделать то, что просите, несколькими способами:

  1. Использование библиотеки C# электронных таблиц Google (как в ответе Tacoman667) для получения ListFeed, который может возвращать список строк (ListEntry на языке Google), каждая из которых имеет список пар имя-значение.API электронных таблиц Google (http://code.google.com/apis/spreadsheets/code.html) в документации более чем достаточно информации для начала работы.

  2. Использование API визуализации Google, который позволяет отправлять более сложные (почти как SQL) запросы для получения только необходимых строк/столбцов.

  3. Содержимое электронной таблицы возвращается в виде каналов Atom, поэтому вы можете использовать синтаксический анализ XPath или SAX для извлечения содержимого канала списка.Есть пример того, как это сделать (боюсь, только на Java и Javascript) по адресу http://gqlx.twyst.co.za.

Я почти уверен, что для этого в Google Code найдутся некоторые SDK/наборы инструментов C#.я нашел Вот этот, но могут быть и другие, поэтому стоит поискать их.

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

Это должно помочь вам начать.Я не играл с ним в последнее время, но некоторое время назад я скачал очень старую версию, и она показалась мне довольно надежной.Он также обновлен до Visual Studio 2008, так что ознакомьтесь с документацией!

Эта страница блога Twilio, созданная 24 марта 2017 года Маркосом Плакона, может оказаться полезной.

Таблицы Google и .NET Core

Это ссылки Google.Api.Sheets.v4 и ОАут2.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top