У меня есть приложение, которое управляет структурой диска 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 не задан, но ячейки по-прежнему «окаймлены», а для столбцов установлен цвет фона):

Screenshot of formatting getting lost after reaching certain limit of data

0
Tatranskymedved 10 Янв 2021 в 23:36
Чтобы правильно понять текущую ситуацию, можете ли вы предоставить тело запроса (данные JSON) и образец электронной таблицы для репликации вашей проблемы?
 – 
Tanaike
11 Янв 2021 в 03:37
Извините, изначально я предоставил неверную информацию - форматирование, которое не применяется, является «последним запросом» в пакетном обновлении. Может ли это сильно повлиять на результат?
 – 
Tatranskymedved
11 Янв 2021 в 11:03
Спасибо за ответ и добавление дополнительной информации. Исходя из вашей дополнительной информации, я предложил в качестве ответа пункт модификации. Не могли бы вы это подтвердить? Если я неправильно понял ваш вопрос и цель, и это был не тот результат, которого вы ожидаете, я прошу прощения.
 – 
Tanaike
11 Янв 2021 в 11:31

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
Tanaike 11 Янв 2021 в 12:23
Извините за время, потраченное на это, проблема фактически решена в другом месте .. Поскольку стиль, который я устанавливаю по запросу, не тот, который я ищу для исправления. У меня были все 50 файлов, предварительно отформатированных с помощью некоторого файла шаблона ... который, к сожалению, имеет проблемы со стилем, а с 75+ строк стиль отсутствует. Я ценю ваше время и еще раз прошу прощения за его потраченное время. :(
 – 
Tatranskymedved
11 Янв 2021 в 21:45
Спасибо за ответ. Приносим извинения за неудобства, а также за плохое знание английского языка. К сожалению, я не могу понять вашу текущую проблему из вашего ответа. Могу я спросить вас о деталях? Я хотел бы разобраться в этом и подумать над решением.
 – 
Tanaike
12 Янв 2021 в 04:23
Проблема решена. Проблема с моим шаблоном "Google лист", из которого были созданы все документы. В этом шаблоне ранее были заданы стили (например, перенос слов, шрифт, ...), но только для строк 0-75 ~. Когда я отправляю запрос (пакетное обновление) со всеми стилями, они объединяются с существующим стилем. Проблема в том, что у моего пакетного обновления нет стилей, которые я хотел (например, переноса слов, ..), и я думал, что что-то не так с запросом. Потому что все это работало для первых 0-80 строк.
 – 
Tatranskymedved
12 Янв 2021 в 11:09
Спасибо за ответ и добавление дополнительной информации. Я понял, что ваша проблема решена. Я рада этому.
 – 
Tanaike
12 Янв 2021 в 11:26