#python #google-sheets-api
#python #google-sheets-api
Вопрос:
Я пытаюсь добавить данные в Google sheet из моего скрипта Python. Каждая строка имеет 49 значений (49 столбцов, которые будут обновлены для каждой строки). Однако, когда я запускаю свой код, он обновляет только 40 столбцов для каждой строки и отбрасывает последние 9 значений.
Я искал в Google, чтобы найти что-нибудь, связанное с этим, но я ничего не смог найти.
Вот мой код:
RANGE_NAME = 'Left Hand Tray' # the name of the sheet.
data_to_upload = [['FAN_ASSEMBLY', 'Right Nest', '2019-03-27 19:24:35', '142.968002', '1', '1', '1', '1', '1', '1', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['FAN_ASSEMBLY', 'Left Nest', '2019-03-27 19:26:18', '94.480003', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['FAN_ASSEMBLY', 'Right Nest', '2019-03-27 19:28:41', '143.207993', '1', '1', '1', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '0', '0', '0', '1', '1', '1', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'], ['FAN_ASSEMBLY', 'Left Nest', '2019-03-27 19:31:55', '193.112000', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']]
body = {
'majorDimensions': 'ROWS',
'values': data_to_upload
}
request = sheet.values().append(spreadsheetId=SPREADSHEET_ID, range=RANGE_NAME, body=body, valueInputOption='USER_ENTERED')
response = request.execute()
Последние значения для каждой строки данных не загружаются. Вот ответ, который я получаю:
{'spreadsheetId': <the_spreadsheet_id>, 'tableRange': "'Left Hand Tray'!A1:AW4121", 'updates': {'spreadsheetId': <the_spreadsheet_id>, 'updatedRange': "'Left Hand Tray'!A4122:AN4125", 'updatedRows': 4, 'updatedColumns': 40, 'updatedCells': 160}}
Вы можете видеть в ответе, что в листе есть столбцы до AW, но в части обновлений вы можете видеть, что он загружен только до столбца AN.
Комментарии:
1. Я тестировал ваш код и
print(len(data_to_upload[0]))
выходные40
данные, не49
.2. Вы правы, есть еще одна проблема с моим кодом. Извините за это.
Ответ №1:
матрица data_to_upload содержит только 40, а не 49 элементов в каждой строке, как упоминал @glhr.
Вы не переходите границы Google sheet, которые вы можете увидеть здесь: https://gsuitetips.com/tips/sheets/google-spreadsheet-limitations /
Ответ №2:
Ваш код делает именно то, что должен. Проверьте размер вашего data_to_upload
массива:
print("Rows:",len(data_to_upload))
print("Columns:",len(data_to_upload[0]))
ВОЗВРАТ:
Rows: 4
Columns: 40
Обратите внимание, что tableRange': "'Left Hand Tray'!A1:AW4121",
это означает именно это … диапазон всей вашей таблицы (4121 строка, 49 столбцов).
'updatedRange': "'Left Hand Tray'!A4122:AN4125"
указывает диапазон таблицы, которая была обновлена (4 строки, 40 столбцов), который соответствует размеру ваших входных данных.