9

既存の Google ドキュメント スプレッドシートを新しい Google ドキュメント スプレッドシートにコピーしたいと考えています。v2.0 .NET APIがそれをネイティブに処理できるとは思いません (または、そうであればクラス/メソッドが見つかりません)。ただし、v3.0 プロトコルはできるようですが、これを実装する方法がわかりません。現在のフレームワーク、または現在の.net APIで可能である場合でも。例えば。~DocumentsFeed.copy() (疑似コード)。

変換プロセスで複雑な数式の一部が台無しになるため、一時的な Excel ファイルにエクスポートしてから新しい名前でアップロードすることもできません。

私は少し.NET初心者なので、どんな情報でも大歓迎です。v3 プロトコル (ajax など) しか使用できず、.NET 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);
    }
}
4

2 に答える 2

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

この解決策は基本的に、 Document List APIservice.Queryを使用して既存のスプレッドシートを取得し ( )、それを再挿入することです ( )。service.Insert

アプリケーション名、ユーザー名、パスワード、スプレッドシートのタイトルはすべて大文字に置き換えてください。

Google.GData.Documents への参照を追加します。

これは、.NET 4 (以前のバージョンでも動作するはずです) とGoogle Documents List Data API v2.0 (DLL はバージョンが 1.6.0.0: google-gdataであると言う) を使用しており、プロトコルのバージョン 3.0 を使用しているようです。

于 2010-09-25T14:32:25.260 に答える
0

Web アプリケーションを開発しているのか、デスクトップ アプリケーションを開発しているのかは少し不明なので、両方をカバーしようとします (本質的に、それらは非常に似ています - なぜなら...)。

Web アプリケーションを開発している場合、100% AJAX ソリューションを作成することはできません。同じドメインの URL のみをリクエストできます。これを行うには、通信サーバー側のみを行うか、サーバー側で行い、AJAX を介して Web アプリにプロキシする必要があります。

デスクトップアプリケーションを開発している場合は、これも行う必要があります。AJAX部分を除く。

サンプル アプリはかなり簡単です。提供されたドキュメントを考慮すると、作成に 2 ~ 3 時間かかります。HTTP および POST リクエストの形成について少し知識があれば、それを機能させることができるはずです。

于 2010-09-23T10:21:18.063 に答える