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

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

Ответ 1

В соответствии с .NET руководство пользователя:

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

Добавьте эти операторы:

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

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

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

Ответ 2

Я написал простую обертку вокруг 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, который переводит на google структурированные операторы запросов:

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

Ответ 3

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

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

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

Ответ 4

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

  • Использование библиотеки электронных таблиц 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.

Ответ 5

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

Ответ 6

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

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