Почему Google spreadsheets API перестает применять форматирование после ввода определенного объема данных?

#google-sheets #google-api #google-sheets-api

#google-sheets #google-api #google-sheets-api

Вопрос:

У меня есть приложение, которое управляет структурой Google диска и обновляет существующие таблицы Google. Во всех этих документах Sheets я столкнулся со странным поведением. Как только я добавляю некоторый объем данных (около 80-100 введенных строк), электронная таблица перестает применять форматирование к данным.

Приложение является стандартом C # / .NET (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

Есть ли у Google spreadsheets API какие-то ограничения на форматирование? Что может быть причиной потери форматирования в этой части? Есть ли что-то, о чем я должен знать, что может ограничить это поведение?


Скриншот неправильного форматирования определенного объема данных (например, WORD_WRAP, ВЫРАВНИВАНИЕ ТЕКСТА не задано, но ячейки по-прежнему «окаймлены», а для столбцов задан цвет фона):

Скриншот форматирования, которое теряется после достижения определенного предела данных

Комментарии:

1. Чтобы правильно понять вашу текущую ситуацию, можете ли вы предоставить тело запроса (данные в формате JSON) и образец электронной таблицы для воспроизведения вашей проблемы?

2. @Tanaike Извините, изначально я предоставил неверную информацию — форматирование, которое не применяется, является «последним запросом» в пакетном обновлении. Может ли это серьезно повлиять на результат?

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

Ответ №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 в теле вашего запроса, в данном случае, я думаю, что ситуация не изменилась. Потому что используется одна ячейка. Пожалуйста, будьте осторожны с этим.

Ссылки:

Комментарии:

1. Извините за потраченное на это время, проблема фактически завершена в другом месте.. Поскольку стиль, который я устанавливаю с помощью запроса, — это не тот, который я ищу для исправления. У меня были все 50 файлов, предварительно сформированных с помощью некоторого файла шаблона… у которых, к сожалению, есть проблемы со стилем, и начиная с 75 строк стиль отсутствует. Я ценю ваше время и еще раз прошу прощения за то, что потратил его впустую. 🙁

2. @Tatranskymedved Спасибо за ответ. Я приношу извинения за неудобства, а также за мои плохие знания английского языка. К сожалению, я не могу понять вашу текущую проблему из вашего ответа. Могу я спросить вас об этом подробнее? Я хотел бы разобраться в этом и подумать о решении.

3. Проблема решена. Проблема с моим шаблоном «Google sheet», из которого были созданы все документы. Этот шаблон ранее устанавливал стили (например, перенос слов, шрифт, …), Но только для 0-75 ~ строк. Когда я отправляю запрос (пакетное обновление) со всеми стилями, они объединяются с существующим стилем. Проблема в том, что в моем пакетном обновлении нет нужных мне стилей (например, перенос слов, ..), И я подумал, что что-то не так с запросом. Потому что все это работало для первых строк 0-80.

4. @Tatranskymedved Спасибо за ответ и добавление дополнительной информации. Я мог понять, что ваша проблема была решена. Я рад этому.