У меня есть приложение, которое управляет структурой диска Google и обновляет существующие таблицы Google. Во всех этих Таблицах я обнаружил странное поведение. Как только я добавляю некоторый объем данных (около 80–100 введенных строк), электронная таблица перестает применять некоторое форматирование к данным.
Приложение - это C # / .NET Standard (4.7.2) с использованием Google.Apis .Sheets.v4 nuget и GoogleSheetsApi-V4 в качестве конечной точки.
Приложение создает и отправляет пакетное обновление, содержащее оба данных. и форматирование (стили). Пакетное обновление - это конкретный запрос, поскольку он является транзакционным - если какой-либо из подзапросов не будет применен (например, запрос не анализируется через сервер Google), весь запрос не будет применяться (это означает, что все подзапросы будут отброшены).
Мне известны ограничения на количество запросов, и я не достиг их. Такое поведение наблюдается во всех протестированных файлах (всего около 50) - первые 80-100 строк отформатированы без проблем, остальные - с проблемами.
Ответ от API Google (после запроса на пакетное обновление) пуст и не сообщает об ошибках.
Для форматирования я использую batchRequest
с несколькими requests
. Я включаю их в порядок отправки и применения:
UpdateCells
сCellData.UserEnteredValue
MergeCells
UpdateCells
сCellData.UserEnteredFormat
UpdateBorders
RepeatCell
- ...
Есть ли у API таблиц Google какие-то ограничения на форматирование? В чем может быть причина потери форматирования в этой части? Есть ли что-то, о чем я должен знать, что могло бы ограничить такое поведение?
Снимок экрана с плохим форматированием при определенном количестве данных (например, WORD_WRAP, TEXT_ALIGNMENT не задан, но ячейки по-прежнему «окаймлены», а для столбцов установлен цвет фона):
1 ответ
Я верю вашей цели следующим образом.
- От
the formatting, which is not applied, is "last request" in the batch update.
в вашем комментарии.- Вы хотите отразить
WRAP
изwrapStrategy
в столбце 3 строк с 3 по 96, используя метод batchUpdate API Sheets.
- Вы хотите отразить
Пункты модификации:
- Когда я увидел тело вашего запроса, я подумал, что
range
может быть неправильным. Например, если вы хотите отразитьWRAP
изwrapStrategy
следующим образом.- От 3 до 96 для строк.
- Колонка 3.
Измените range
следующим образом.
Модифицированное тело запроса:
Измените repeatCell
последнего запроса в теле запроса следующим образом и проверьте его снова.
{
"repeatCell": {
"cell": {
"userEnteredFormat": {
"horizontalAlignment": "CENTER",
"verticalAlignment": "MIDDLE",
"wrapStrategy": "WRAP"
}
},
"fields": "userEnteredFormat.wrapStrategy,userEnteredFormat.verticalAlignment,userEnteredFormat.horizontalAlignment",
"range": {
"startRowIndex": 3,
"endRowIndex": 96,
"startColumnIndex": 3,
"endColumnIndex": 4,
"sheetId": ### <--- Please set sheet ID.
}
}
}
Заметка:
- Кстати, по поводу 2-го запроса
mergeCells
в теле вашего запроса, в данном случае, я думаю, что ситуация не изменилась. Потому что используется одиночная ячейка. Пожалуйста, будьте осторожны.
Ссылки:
Похожие вопросы
Новые вопросы
google-sheets
НЕ делитесь электронными таблицами/изображениями в качестве единственного источника данных. Вместо этого используйте таблицы Markdown TEXT. Используйте этот тег для вопросов о программном взаимодействии с Google Таблицами. Используйте с: [google-apps-script] для вопросов, касающихся встроенного языка сценариев, [google-sheets-formula] для вопросов, связанных с дизайном формул или [google-sheets-api] и языковым тегом (например:[ python]) по вопросам, связанным с использованием API листов. НЕ используйте с [excel].