API Google Sheets распознает конец листа - PullRequest
0 голосов
/ 07 октября 2018

Я добавляю строки в Google Sheet через API.Для этого я использую C # Google.API.Sheets.v4 NuGet.Я в значительной степени вычисляю ячейки, в которые хочу писать сам.

Моя проблема в том, что, когда я достигаю конца листа, я не знаю этого в своем приложении.Кажется, что нет ошибки или чего-то еще.Данные просто теряются!

Когда я использую свой лист без API, я заметил бы и просто нажал эту кнопку:

I mean this bottom functionality

Iхотите добавить 1 строку перед записью одной строки в моем приложении или распознать, что достигнут конец рабочего листа.

Код в значительной степени похож на приведенный здесь код обновления: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update

Я использую функцию spreadsheets.values.update и записываю в нижний ряд, который еще не существует

Итак, еще раз вкратце: мне нужно, чтобы в моем приложении как-то была функция "больше строк снизу"

Бонусный вопрос: я потерял некоторые данные из-за этой проблемы.Есть идеи как его восстановить?

1 Ответ

0 голосов
/ 07 октября 2018

Я нашел удовлетворительный обходной путь.Вместо использования функции spreadsheets.values.update я использую функцию spreadsheets.values.append, как показано здесь .

Важно установить для него значение InsertDataOptionEnum.OVERWRITE, чтобы имитировать поведение илив итоге каждая новая ячейка будет находиться в отдельной строке.

OLD (использует .Update ())

SpreadsheetsResource.ValuesResource.UpdateRequest request = sheetsService.Spreadsheets.Values.Update(valueRange, spreadsheetId, range);
request.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;

NEW (использует .Append ())

//use AppendRequest instead of UpdateRequest to avoid lost lines on end of sheet
SpreadsheetsResource.ValuesResource.AppendRequest request = sheetsService.Spreadsheets.Values.Append(valueRange, spreadsheetId, range);
request.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED;
request.InsertDataOption = SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum.OVERWRITE; //overwrite when writing cells or it will be new line per cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...