Стиль столбца игнорируется при использовании spreadsheets.batchUpdate с AppendCellsRequest - PullRequest
2 голосов
/ 09 апреля 2020

Как разработчик, я использую эту конечную точку: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate

И запрос: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#AppendCellsRequest, чтобы вставить новую строку со значениями.

У меня есть электронная таблица с некоторыми стилями форматов столбцов: background-color / font-weight / text-wrap / data-validation.

For example:

Проблема, когда я использую такие запросы:

curl --request POST \
 'https://sheets.googleapis.com/v4/spreadsheets/1SoDx8YRyiKF9vKfa_2w0xc7DTNIlQoLC6hBq1SCJEJY:batchUpdate?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"requests":[{"appendCells":{"sheetId":0,"fields":"*","rows":[{"values":[{"userEnteredValue":{"stringValue":"TEST STRING VALUE long"}},{"userEnteredValue":{"stringValue":"TEST TEXT LONG"}}]}]}}]}' \
  --compressed

я вижу, что стили переноса текста и проверки данных игнорируются:

enter image description here

Ключевой момент здесь, который я использую только: поле 'userEnteredValue' для предоставления значений.

В соответствии с do c: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#CellData я могу использовать 'userEnteredFormat' / 'dataValidation' , но «При записи новый формат будет объединен с существующим форматом». Мне довольно сложно снова получить и опубликовать эти форматы стилей.

Мой вопрос - есть ли способ просто опубликовать CellData с использованием AppendCellsRequest настолько простым, насколько это возможно, и сохранить существующие стили столбцов?

1 Ответ

1 голос
/ 10 апреля 2020
  • Вы хотите поместить значения с помощью AppendCellsRequest метода batchUpdate в Sheets API.
  • Вы хотите сохранить стиль текста и правила проверки данных ячеек при запуске AppendCellsRequest.
    • Вы хотите поместить только текстовые значения.
  • Вы уже смогли получить и поместить значения для Google Spreadsheet с помощью API Sheets.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Точка модификации:

В вашем случае вы используете "fields":"*", в то время как вы устанавливаете только свойство userEnteredValue. В этом случае также устанавливаются свойства, кроме userEnteredValue. Я думаю, что это является причиной вашей проблемы.

Чтобы избежать этой проблемы, используйте userEnteredValue до fields.

Модифицированное тело запроса:

Когда тело вашего запроса изменяется, оно становится следующим:

С:
--data '{"requests":[{"appendCells":{"sheetId":0,"fields":"*","rows":[{"values":[{"userEnteredValue":{"stringValue":"TEST STRING VALUE long"}},{"userEnteredValue":{"stringValue":"TEST TEXT LONG"}}]}]}}]}'
До:
--data '{"requests":[{"appendCells":{"sheetId":0,"fields":"userEnteredValue","rows":[{"values":[{"userEnteredValue":{"stringValue":"TEST STRING VALUE long"}},{"userEnteredValue":{"stringValue":"TEST TEXT LONG"}}]}]}}]}'
  • "fields":"*" было изменено на "fields":"userEnteredValue".

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...