下载所有Google表格

时间:2019-01-22 10:23:00

标签: c# google-api google-sheets-api google-api-dotnet-client

我想使用Google.Apis.Sheets.v4从C#从Google Spreadsheet下载所有可用的工作表; 我已经编写了以下代码,这些代码是我从Google开发人员网页上获得的,但是在这里,它只能通过其ID连接粒子表:

UserCredential凭据;

        using (var stream =
            new FileStream(@"credentials.json", FileMode.Open, FileAccess.Read))
        {
            string credPath = System.Environment.GetFolderPath(
                System.Environment.SpecialFolder.Personal);


            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None,
                new FileDataStore(credPath, true)).Result;
            Console.WriteLine("Credential file saved to: " + credPath);
        }

        // Create Google Sheets API service.
        var service = new SheetsService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,
        });




        // Define request parameters.
        String spreadsheetId = "1rpmT0S1Naic8wG8xok2cjNJBIgKa8t24C80muc8YVNE";// "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms";
        String range = "Class Data!A1:B4";
        SpreadsheetsResource.ValuesResource.GetRequest request =
                service.Spreadsheets.Values.Get(spreadsheetId, range);

是否可以下载所有表格名称及其电子表格ID,以便我的程序可以按其ID逐个连接每个ID并更新数据? 预先感谢

2 个答案:

答案 0 :(得分:2)

我认为这完全取决于您要执行的操作,因为您对API及其功能的误解,我怀疑您的问题尚不清楚。

  • 可以使用Google Sheets API访问工作表中的内容。
  • 通过Google Drive API,您可以自己访问实际工作表的文件存储。

因此,例如,如果您要下载用户有权访问的所有Google表格的列表,则可以使用Google驱动器api file.list方法。然后,您可以将文件本身下载到硬盘上。或者,您可以使用Google表格api查看文件本身的状态。

var request = service.Files.List();
request.Q = "mimeType = 'application/vnd.google-apps.spreadsheet'"
var result = request.Execute();

My drive samples

Google驱动器api上的方向

您需要记住的是Google驱动器api是文件存储api。可以将其视为Windows PC上的文件资源管理器。它包含有关用户有权访问的文件的所有信息。 Google Sheets api仅有权访问pplication / vnd.google-apps.spreadsheet

类型的文件中的数据

获取工作表类型的文件列表

var driveService = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "Drive Oauth2 Authentication Sample"
            });

var request = driveService.Files.List();
request.Q = "mimeType = 'application/vnd.google-apps.spreadsheet'"
var result = request.Execute();

var fileId = result.FirstOrDefault().Id
var fileId = result.FirstOrDefault().Name

范围

请记住,要访问用户数据,您必须具有用户访问该数据的权限才能正常工作,您必须已请求访问其驱动器数据的权限。以下范围之一应该起作用。

列出所有文件教程

本教程还可以List All files为您提供帮助。您只需要添加Q参数即可仅列出特定元数据类型的文件。

答案 1 :(得分:0)

您可以使用@DaIm提供的代码在驱动器上获取所有必需的电子表格ID。

然后,您可以使用spreadsheets.get方法来获取特定电子表格上的所有信息,包括工作表名称和ID https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get

然后,您可以使用spreadsheets.values资源中的各种方法来获取/更新/批量更新工作表中的值。 https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values 提示:仅将工作表名称作为rangevalues.get参数的值即可返回包含所有工作表值的范围,这非常方便。