如何将特定的PUBLIC电子表格导出到csv

时间:2015-05-27 16:32:23

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

因此,我尝试将此公开工作表导出为CSV格式。

我已经了解到我可以使用以下模式,只需在我的浏览器中(没有登录谷歌):

https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key={0}&exportFormat=csv

这很棒,看起来很简单。但是,当我尝试在我的应用程序中执行此操作时,它似乎要我登录。而登录过程中,我无法开始工作。

我尝试了多种解决方案。使用旧的auth方法,我设法得到这样的东西:

var spreadsheetService = new SpreadsheetsService(name);

            var csv = string.Empty;
            using (var sr = new StreamReader(spreadsheetService.Query(exportUrl)))
            {
                csv = sr.ReadToEnd();
            }

这很有效,但现在凭据已经转移到OAuth,这对我来说不再适用。我还没有找到将OAuth凭据添加到此方法的方法。

所以相反,我尝试过这个例子,并最终得到类似的东西:

    var certificate = new X509Certificate2(data, "notasecret", X509KeyStorageFlags.Exportable);

    var credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer(serviceEmail)
       {
           Scopes = new[] { PlusService.Scope.PlusMe }
       }.FromCertificate(certificate));

    credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Wait();

    var service = new PlusService(new BaseClientService.Initializer()
                                      {
                                          HttpClientInitializer = credential,
                                          ApplicationName = "My app",
                                      });

这似乎有效,但我不知道下一步是什么。如何在PlusService上执行我的导出查询?它甚至可能吗?相反,我可以将OAuth凭据添加到SpreadsheetService吗?

1 个答案:

答案 0 :(得分:0)

要从云端硬盘下载文件并将其导出到csv,您必须使用云端硬盘(files.get),然后调用导出链接。

另请查看此documentation以了解有关从云端硬盘下载文件的详情。

希望有所帮助!