我尝试添加新的电子表格(如果它不存在于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以使其能够写入数据,但我无法找到。
答案 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
它有效。希望它会帮助那些偶然发现同一问题的人。