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

How to export a specific PUBLIC spreadsheet to csv

所以我正在尝试将此 public sheet 导出到 CSV。

我了解到我可以使用以下模式,只需在我的浏览器中使用(无需登录 google):

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

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

我尝试了多种解决方案。使用旧的身份验证方法,我设法让这样的东西起作用:

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 吗?

要从 Drive 下载文件并将其导出到 csv,您必须使用 Drive(files.get),然后调用导出 link。

另请查看此 documentation 以了解有关从云端硬盘下载文件的更多信息。

希望对您有所帮助!