使用Google .NET API复制Google文档电子表格

时间:2010-09-15 06:19:42

标签: c# .net google-api google-sheets

我想将现有的Google文档电子表格复制到新的Google文档电子表格中。我不认为 v2.0 .NET API 可以原生处理它(或者如果是这样我找不到类/方法),但它看起来像 v3.0 protocol 可以,但我不知道如何在当前框架中实现这一点,或者即使有可能使用当前的.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);
    }
}

2 个答案:

答案 0 :(得分:4)

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检索现有电子表格(Document List API)并重新插入(service.Insert)。

确保替换所有CAPS应用程序名称,用户名,密码和电子表格标题。

添加对Google.GData.Documents的引用。

这是使用.NET 4(也应该使用较低版本)和Google Documents List Data API v2.0(DLL表示版本是1.6.0.0:google-gdata),它似乎使用协议的3.0版本。

答案 1 :(得分:0)

如果您正在开发Web应用程序或桌面应用程序,有点不清楚,所以我会尝试覆盖两者(基本上它们非常相似 - 因为......)。

如果您正在开发Web应用程序,则无法制作100%AJAX解决方案。您只能在同一个域中请求URL。要做到这一点,您需要只做通信服务器端,或者做服务器端并通过AJAX将其代理到您的Web应用程序。

如果您正在开发桌面应用程序,您还必须执行此操作。除了AJAX部分。

一个示例应用程序相当容易 - 考虑the documentation given 2-3小时的工作。只需了解一下HTTP和POST请求的形成,您就应该能够使其工作。