【问题标题】:Spreadsheets API Can not update a read-only feed电子表格 API 无法更新只读提要
【发布时间】:2015-12-12 07:46:49
【问题描述】:

如果GData Spreadsheet API for .NET 不存在,我正在尝试添加新电子表格,但它给了我以下异常:

Can not update a read-only feed

这是我的代码:

    var service = new SpreadsheetsService("<my-app>");
    service.setUserCredentials("<login>", "<password>");

    // Instantiate a SpreadsheetQuery object to retrieve spreadsheets.
    SpreadsheetQuery query = new SpreadsheetQuery();
    var title = "test";
    query.Title = title;

    // Make a request to the API and get all spreadsheets.
    SpreadsheetFeed feed = service.Query(query);

    if (!feed.Entries.Any())
    {
        var worksheet = new WorksheetEntry(20, 20, title);
        service.Insert(feed, worksheet);             
    }

通过 Fiddler,我看到我正在请求:

GET /feeds/spreadsheets/private/full?title=test

一切正常,但我没有看到任何更新数据的请求。我想我应该以某种方式更改 SpreadsheetQuery 以使其能够写入数据,但我找不到如何。

【问题讨论】:

    标签: google-sheets gdata google-spreadsheet-api gdata-api


    【解决方案1】:

    是我不专心,因为电子表格 API 上的谷歌文档说:

    可以通过上传电子表格来创建新电子表格 通过 Google Drive API 文件。电子表格 API 目前不支持 提供一种删除电子表格的方法,但在 谷歌云端硬盘 API。出于测试目的,您可以创建一个 手动电子表格或上传电子表格。

    所以我基本上用 Nuget 安装了GoogleDrive API。然后添加了以下添加文件的方法:

    private static void AddFile(string title)
    {
        var clientID = "put here a clientID";
        var clientSecret = "put here a clientSecret";
    
        UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
            new ClientSecrets
            {
                ClientId = clientID,
                ClientSecret = clientSecret,
            },
            new[] { DriveService.Scope.Drive },
            "here goes your account",
            CancellationToken.None).Result;
    
        // Create the service.
        var service = new DriveService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Drive API Sample",
        });
    
        var body = new Google.Apis.Drive.v2.Data.File();
        body.Title = title;
        //body.Description = "A test document";
        body.MimeType = "application/vnd.google-apps.spreadsheet";
    
        service.Files.Insert(body).Execute();
    }
    

    当我第一次运行上面的代码时 - 我收到一个异常,说

    无法加载文件或程序集 'Microsoft.Threading.Tasks.Extensions.Desktop,版本=1.0.16.0

    我在包管理器控制台中运行这些:

    Uninstall-Package Microsoft.Bcl.Async -Force
    Install-Package Microsoft.Bcl.Async
    

    它奏效了。希望它能帮助遇到同样问题的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多