Получаете только нескрытые, видимые данные электронной таблицы Google с помощью API Python и Google Sheets?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Получаете только нескрытые, видимые данные электронной таблицы Google с помощью API Python и Google Sheets?

Сообщение Anonymous »

Я использую API Google Sheets для получения данных из онлайн-таблиц и их считывания в фрейм данных pandas. Я успешно настроил сценарий для получения данных, но эта реализация по умолчанию извлекает все, даже скрытые строки/столбцы. В электронной таблице много строк, которые были скрыты. Я не хочу их получать, поскольку скрытое состояние строки означает, что она не имеет значения. Поэтому я ищу способ получить электронную таблицу без скрытых вручную строк/столбцов. Или, альтернативный вариант, способ получения содержимого электронной таблицы и последующего исключения скрытых ячеек. Пока мне не удалось выяснить, реализована ли такая функция в Google Sheets API.
Моя текущая рабочая реализация выглядит следующим образом. Проблема здесь в том, что сюда входят даже скрытые строки/столбцы:

Код: Выделить всё

def getSpreadsheetData(name, spreadsheet_id, sheet_id=None):

global values_input, service
creds = ServiceAccountCredentials.from_json_keyfile_name(creds_file_path, SCOPES)
service = build('sheets', 'v4', credentials=creds)

sheet = service.spreadsheets()
data_table = sheet.values().get(spreadsheetId=spreadsheet_id,
range=name).execute()
data_values = data_table.get('values', [])

if not data_values:
print('No data found.')
return -1

else:
df = pd.DataFrame(data_values)
return df

Изменить:
Эта проблема, на мой взгляд, отличается от простой фильтрации электронной таблицы на основе значения столбца, как описано здесь. Я хочу получить только те строки таблицы, которые не скрыты. Вызов API по умолчанию для получения содержимого электронной таблицы (см. мой код выше) извлекает все строки, даже те, которые были скрыты вручную и, следовательно, не видны людям, открывающим таблицу по ссылке.
Изменить 2:
Я обновил сообщение, чтобы было более понятно, что моя текущая рабочая реализация возвращает все скрытые ячейки, а это именно то, чего я не хочу. Мне нужен подход, который может исключить те строки/столбцы, которые были скрыты пользователем вручную, поскольку скрытые ячейки не важны и не имеют значения. Следовательно, они мне не нужны в моем выходном фрейме данных.
Изменить 3:
Я собрал небольшой образец набора данных, представленный ниже. Скопируйте содержимое в Google Sheet. С этими данными я обнаружил, что парсеру не удается отличить, что должно быть заголовком, а что должно быть в первой строке. Обратите внимание, что образец набора данных имеет три видимые строки и одну скрытую строку. Функция необходима для возврата этих трех видимых строк в кадре данных pandas. Вместо этого я получаю только один заголовок и две строки, причем заголовок на самом деле представляет собой комбинацию настоящих имен столбцов и содержимого первой строки.
Набор данных:

Код: Выделить всё

Lesson  Date/Time       German        English                   Completed
Hallo!  Oct 21st, 2021  nicht         not
Hallo!  Oct 21st, 2021  nicht so gut  not so good               10/22
Hallo!  Oct 21st, 2021  oder          or
Hallo!  Oct 21st, 2021  schön         nice; beautiful; pretty   10/22

Примечание: строка 3 (содержащая «одер» и «или») была скрыта.
Код:

Код: Выделить всё

def getSpreadsheetData(spreadsheet_id, sheet_id=None):

global values_input, service
creds_file_path = ""        # add your service account path here
SCOPES = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive']

creds = ServiceAccountCredentials.from_json_keyfile_name(creds_file_path, SCOPES)
service = build('sheets', 'v4', credentials=creds)
access_token = creds.get_access_token().access_token

url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet_id + '/gviz/tq?tqx=out:csv&gid=' + sheet_id
res = requests.get(url, headers={'Authorization': 'Bearer ' + access_token})
df = pd.read_csv(io.StringIO(res.text), sep=',')
return df
Неправильный вывод:

Код: Выделить всё

  Lesson Hallo! Date/Time Oct 21st, 2021  German nicht              English not Completed   Unnamed: 5
0        Hallo!           Oct 21st, 2021  nicht so gut              not so good      10/22         NaN
1        Hallo!           Oct 21st, 2021         schön  nice; beautiful; pretty      10/22         NaN
Как видно, заголовок и первая строка объединены, что неверно. Включение параметра header=0 в pd.read_csv() тоже не помогло, возвращается тот же неверный вывод.


Подробнее здесь: https://stackoverflow.com/questions/694 ... ing-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Google Sheets API v4 – Получение 429 [Ресурс исчерпан (например, проверка квоты)] во время создания электронной таблицы
    Anonymous » » в форуме JAVA
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • «Google Sheets:« Невозможно открыть ошибку электронной таблицы »при открытии файла CSV из приложения Android с помощью н
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Дублирование всей таблицы с помощью Google Sheets API
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Дублирование всей таблицы с помощью Google Sheets API
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Дублирование всей таблицы с помощью Google Sheets API
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»