Скачать все листы Google - PullRequest
       58

Скачать все листы Google

0 голосов
/ 22 января 2019

Я хочу загрузить все доступные листы из Google Spreadsheet из C # с Google.Apis.Sheets.v4;Я написал следующий код, полученный с веб-страницы разработчика Google, но здесь он может подключить лист частиц только по его идентификатору:

UserCredential credential;

        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);

Есть ли способ?загрузить имя всех листов и их идентификатор электронной таблицы, чтобы моя программа могла соединять каждую из них по ее идентификатору и обновлять данные?Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы можете использовать код, предоставленный @DaImTo, чтобы получить все необходимые идентификаторы электронных таблиц на диске.

Затем вы можете использовать метод spreadsheets.get, чтобы получить всю информацию о конкретной электронной таблице, включая имена и идентификаторы листов https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get

Затем вы можете использовать различные методы из spreadsheets.values Resource для получения / обновления / batchUpdate значений на листе. https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values подсказка: помещение только имени листа в качестве значения для параметра range в values.get возвращает диапазон, содержащий все значения листа, и это очень удобно.

0 голосов
/ 22 января 2019

Я думаю, это зависит от того, что именно вы хотите сделать, поскольку ваш вопрос неясен, я подозреваю, из-за вашего неправильного понимания API и того, что они делают.

  • API Google Sheets предназначен дляпозволит вам получить доступ к содержимому листа.
  • Google Drive API позволит вам хранить в хранилище файлов доступ к самим листам.

Так что, если вы, например, хотите загрузитьсписок всех листов Google, к которым у вас есть доступ, будет использовать метод api file.list на диске Google.Затем вы можете загрузить сам файл на свой жесткий диск.Или вы можете использовать API-интерфейсы листов Google, чтобы посмотреть на содержание самих файлов.

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

Примеры моего диска

Инструкции на диске Googleapi

Что вам нужно запомнить, так это то, что API-интерфейс Google drive api - это файл хранилища API.Думайте об этом как файловый менеджер на ПК с Windows.Он содержит всю информацию о файлах, к которым у пользователя есть доступ.API листов Google имеет доступ только к данным в файлах типа 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

Область действия

Не забудьте получить доступ к данным пользователя, для этого необходимо иметь разрешение пользователя на доступ к этим данным. Вы должны запросить разрешение на доступ к данным своего диска.,Должна работать одна из следующих областей:

Учебник по списку всех файлов

Этот учебник также может помочь вам Список всех файлов .Вам просто нужно добавить параметр Q, чтобы получить список файлов только с определенным типом метаданных.

...