Скопируйте электронную таблицу Документов Google с помощью Google .NET API - PullRequest
8 голосов
/ 15 сентября 2010

Я хочу скопировать уже существующую таблицу Google Docs в новую таблицу Google Docs. Я не думаю, что v2.0 .NET API может справиться с этим изначально (или, если так, я не могу найти класс / метод), однако это выглядит как * Протокол 1006 * v3.0 может, но я не уверен, как реализовать это в текущей структуре или даже если это возможно с текущим .net API. например. ~ DocumentsFeed.copy () (псевдокод).

Экспорт в файл temp excel, а затем выгрузка с новым именем также невозможен, так как некоторые сложные формулы путаются в процессе преобразования.

Я немного новичок .NET, поэтому любая информация будет принята с благодарностью, например. Как бы я поступил так в .NET, если бы мог использовать только протокол v3 (ajax и т. Д.), А не API .NET.

Спасибо

РЕДАКТИРОВАТЬ: (последний класс спасибо @langsamu за помощь!)

using System;
using Google.GData.Documents;
using Google.GData.Client;
using Google.GData.Extensions;


public class GoogleDocument
{
    private DocumentsService ds;
    private String username;
    private String password;

    public GoogleDocument(String username, String password)
    {
        this.ds = new DocumentsService("doc service name");
        this.username = username;
        this.password = password;

        this.ds.setUserCredentials(username, password);
        this.ds.QueryClientLoginToken();
    }

    public void copyDocument(String oldFileName, String newFileName)
    {
        SpreadsheetQuery query = new Google.GData.Documents.SpreadsheetQuery();
        query.Title = oldFileName;
        query.TitleExact = true;

        DocumentsFeed feed = this.ds.Query(query);
        AtomEntry entry = feed.Entries[0];

        entry.Title.Text = newFileName;

        var feedUri = new Uri(DocumentsListQuery.documentsBaseUri);
        this.ds.Insert(feedUri, entry);
    }
}

Ответы [ 2 ]

4 голосов
/ 25 сентября 2010
Google.GData.Documents.DocumentsService service = new Google.GData.Documents.DocumentsService("YOUR_APPLICATIONS_NAME");
service.setUserCredentials("YOUR_USERNAME", "YOUR_PASSWORD");

Google.GData.Documents.SpreadsheetQuery query = new Google.GData.Documents.SpreadsheetQuery();
query.Title = "YOUR_SPREADSHEETS_TITLE";
query.TitleExact = true;

Google.GData.Documents.DocumentsFeed feed = service.Query(query);
Google.GData.Client.AtomEntry entry = feed.Entries[0];

var feedUri = new Uri(Google.GData.Documents.DocumentsListQuery.documentsBaseUri);

service.Insert(feedUri, entry);

Это решение в основном заключается в получении существующей электронной таблицы (service.Query) с использованием API списка документов и ее повторной вставке (service.Insert).

Обязательно замените имя приложения ALL CAPS, имя пользователя, пароль и заголовок таблицы.

Добавьте ссылку на Google.GData.Documents.

Thisиспользует .NET 4 (должно работать и с более низкими версиями) и API данных Списка документов Google v2.0 (DLL говорит, что версия 1.6.0.0: google-gdata ), чтоКажется, используется версия 3.0 протокола.

0 голосов
/ 23 сентября 2010

Немного неясно, разрабатываете ли вы веб-приложение или настольное приложение, поэтому я постараюсь охватить оба (по сути, они очень похожи - потому что ...).

Если вы разрабатываете веб-приложение, вы не сможете создать 100% AJAX-решение. Вы сможете запрашивать URL только в том же домене. Для этого вам нужно будет либо выполнить только коммуникационную серверную часть, либо серверную сторону и передать ее через веб-приложение через AJAX.

Если вы разрабатываете приложение для настольного компьютера, вам придется также заняться этим. За исключением части AJAX.

Пример приложения будет довольно простым - 2-3 часа работы, чтобы взбить, учитывая предоставленную документацию . Приложив немного знаний о формировании запросов HTTP и POST, вы сможете заставить его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...