Я использую 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 есть это в их трекере проблем! ссылка