Есть ли ограничение на количество столбцов, которые можно добавить с помощью Google Sheets API?

#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 столбцов), который соответствует размеру ваших входных данных.