- Вы знаете идентификатор электронной таблицы.
- Вы хотите получить все значения из всех листов электронной таблицы.
- Вы уже использовали API листов.
- Sheets API включен на консоли API.
- Вы можете получить токен доступа с помощью процесса OAuth2.
Если мое понимание вернокак насчет этой модификации.Пожалуйста, подумайте об этом, как об одном из нескольких ответов.
Точки модификации:
- Если вы хотите получить данные, используя метод spreadsheets.get, в вашем случае добавьте
sheets/data
в поля типа result=sheet.get(spreadsheetId=SPREADSHEET_ID, fields='sheets/data').execute()
.
Но я хотел бы предложить следующий поток, потому что значения, полученные с помощью spreadsheets.values.batchGet, более удобочитаемы, чем те, которые получены методом spreadsheets.get.
- Чтобы получить все имена листов, используйте метод spreadsheets.get.
- Чтобы получить все значения из листа, используйте метод spreadsheets.values.batchGet.
Комбинируя оба, можно извлечь все значения из всех листов в электронной таблице.
Модифицированный скрипт:
sheet = service.spreadsheets()
sheets = sheet.get(spreadsheetId=SPREADSHEET_ID, fields='sheets/properties/title').execute()
ranges = [sheet['properties']['title'] for sheet in sheets['sheets']]
values = sheet.values().batchGet(spreadsheetId=SPREADSHEET_ID, ranges=ranges).execute()
print(values)
Результат:
Когда скрипт вышевыполняется, возвращаются следующие значения.
{
"spreadsheetId":"###",
"valueRanges":[
{
"range":"Sheet1!A1:Z1000",
"majorDimension":"ROWS",
"values":[["a1","b1","c1"],["a2","b2","c2"],["a3","b3","c3"]]
}
{
"range":"Sheet2!A1:Z1000",
"majorDimension":"ROWS",
"values":[["a1","b1","c1"],["a2","b2","c2"],["a3","b3","c3"]]
}
,
,
,
]
}
["a1","b1","c1"]
- 1-я строка. b1
- столбец "B".
Ссылки:
Если это не тот результат, который вам нужен, я прошу прощения.