Потеря данных с помощью Google Sheets API V4 sheet.spreadsheets.batchUpdate appendCells - PullRequest
0 голосов
/ 08 января 2020

Я использую Google Sheets API V4 в проекте Node.js, чтобы добавить строки в электронную таблицу в ответ на события в нашей платформе.

Интеграция должна была выполнить эту работу:

Событие происходит на платформе -> Интеграция запускается через webhook -> Интеграция создаст новую строку в электронной таблице.

Недавно я проводил стресс-тестирование интеграции, последовательно запустив множество этих событий платформы, и, в свою очередь, интеграция, которую я пишу, запускала вызов batchUpdate для каждого события.

Сценарий добавляет строку к электронные таблицы с использованием sheets.spreadsheets.batchUpdate API.

В результате стресс-теста мы обнаружили, что из 50 событий 5 таблиц отсутствовали в электронной таблице Google Sheets.

Для этих 5 строк, batchUpdate вызов API Sheets был выполнен корректно, поэтому я полагаю, что несколько одновременных запросов appendCells могут потерять данные друг друга.

Я сделал минимальное доказательство концепции сценария, который может воссоздать проблему при запуске двух одновременно. Суть ссылки . Загрузите его, передайте учетные данные и запустите два одновременно, чтобы воспроизвести проблему.

Я также заметил, что проблема не появляется, когда в пакетном обновлении задействовано меньше столбцов. Вот почему я добавил несколько столбцов в RowData для вызова appendCells.

Кто-нибудь нашел хороший способ решить эту проблему и гарантировать, что каждая добавленная строка видна на результирующем листе?

edit: похоже, у Google есть это в их трекере проблем! ссылка

...