Доступ к таблицам Google с помощью C# с использованием API данных Google
Вопрос
У меня есть некоторая информация в таблицах 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#. :
- Перенос данных SQL на лист (код глубокого погружения почта)
- Форматирование текста с помощью API Таблиц (код глубокого погружения почта)
- Создание слайдов из данных электронной таблицы (код глубокого погружения почта)
Вы можете сделать то, что просите, несколькими способами:
Использование библиотеки C# электронных таблиц Google (как в ответе Tacoman667) для получения ListFeed, который может возвращать список строк (ListEntry на языке Google), каждая из которых имеет список пар имя-значение.API электронных таблиц Google (http://code.google.com/apis/spreadsheets/code.html) в документации более чем достаточно информации для начала работы.
Использование API визуализации Google, который позволяет отправлять более сложные (почти как SQL) запросы для получения только необходимых строк/столбцов.
Содержимое электронной таблицы возвращается в виде каналов 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.Api.Sheets.v4 и ОАут2.