0

Мы используем API Google Таблиц V4. Мы хотим добавить 1 миллион строк, так как из v4 у нас есть поддержка для записи 2 миллионов ячеек в Spread sheet. Итак, мы пытаемся добавить 80 000 строк с шестью столбцами. 80 000 * 6 = 480000 Ячейки, но мы получили следующую ошибку.Добавьте 1 миллион строк и укажите позицию ячейки с помощью API Google Таблиц v4

{ 
    "code": 400, 
    "errors": [ 
    { 
     "domain": "global", 
     "message": "Invalid requests[0].appendCells: This action would increase the number of cells in the workbook above the limit of 2000000 cells.", 
     "reason": "badRequest" 
    } 
    ], 
    "message": "Invalid requests[0].appendCells: This action would increase the number of cells in the workbook above the limit of 2000000 cells.", 
    "status": "INVALID_ARGUMENT" 
} 

Мы добавляем 1000 строк каждый раз цикла из 80. После ошибки мы проверяем листы, которые мы обнаружили, что было вставлено 73000 строк.

Мы считаем, что API Google Таблиц также вычисляет пустые ячейки после 6-го столбца. Предположим, что мы вычисляем с помощью ячеек 73000 * 26 (A-Z) = 1898000, и когда мы пытаемся добавить больше, и мы получили ошибку.

Пожалуйста, помогите нам в любом предположении, как удалить пустые ячейки или любую другую альтернативу. Мы используем следующий код

AppendCellsRequest appendCellReq = new AppendCellsRequest(); 
appendCellReq.setSheetId(ssDetails.getSheets().get(4).getProperties().getSheetId()); 
appendCellReq.setRows(listRowData); 
appendCellReq.setFields("userEnteredValue"); 

Request request = new Request(); 
request.setAppendCells(appendCellReq); 

List<Request> requests = new ArrayList<>(); 
requests.add(request); 

BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest(); 

batchRequests.setRequests(requests); 

service.spreadsheets().batchUpdate(spreadsheetId, batchRequests).execute(); 

Вторая вещь, в то время как добавление клеток мы не в состоянии sapcify колонны possition клеток всегда начинают с колонками (A).

ответ

1

Да, ограничение на 2 миллиона ячеек распространяется на все ячейки, пустое или нет. Поскольку по умолчанию лист имеет 26 столбцов, это означает, что может быть не более 2 000 000/26 = 76923 строк, если количество столбцов не уменьшено.

Чтобы удалить ненужные столбцы (те после 6), отправить запрос POST на

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate 

с телом запроса формы

{ 
    "requests": [ 
    { 
     "deleteDimension": { 
     "range": { 
      "sheetId": sheetId, 
      "dimension": "COLUMNS", 
      "startIndex": 7, 
      "endIndex": 26 
     } 
     } 
    } 
    ] 
} 

Ссылка: delete rows or columns.

+0

Thank you @soup, В приведенном выше случае у нас есть фиксированные столбцы. Предположим, что в листе уже есть 14 столбцов, а общее количество столбцов - 26. Теперь мы добавляем 6 столбцов. Итак, как идентифицировать пустые столбцы и удалить его. Пожалуйста, помогите нам, если у вас есть решения. –

+0

Я не понимаю, что вы подразумеваете под «уже имеют 14 столбцов и общее количество столбцов - 26». Это 14 или 26? В любом случае, кажется, единственный способ определить последний столбец с данными в v4 - запросить все значения из листа и обработать их, ища непустые. См. Http://stackoverflow.com/a/37687676 –

+0

Я говорю о 14 заполненных данными, и расширение 12 пусто. Так как мы можем идентифицировать его пустым? Ооо, у нас есть 80 000+ строк, которые обрабатывают его, и найти последние столбцы займет много времени. Есть ли альтернатива? Как будто мы добавляем строки с столбцами без пустых строк/столбцов. –