Spreadsheets API无法更新只读Feed

时间:2014-05-24 13:27:34

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

我尝试添加新的电子表格(如果它不存在于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以使其能够写入数据,但我无法找到。

1 个答案:

答案 0 :(得分:0)

这是我不专心,因为关于Spreadsheet API的谷歌文档说:

  

可以通过上传电子表格来创建新的电子表格   通过Google Drive API提交文件。 Spreadsheets API目前没有   提供删除电子表格的方法,但也提供了   Google Drive 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,Version = 1.0.16.0

我在Package Manager Console中运行它们:

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

它有效。希望它会帮助那些偶然发现同一问题的人。