Ява | Как найти значение (номер строки и столбца) в диапазоне электронной таблицы Google с помощью API?

Я использую Java API (V4) для чтения и редактирования данных из листа Google. Пока я могу читать и редактировать данные на основе номера строки и столбца (индекс).

  • Что я хочу сделать, так это локализовать данные по их конкретному значению (я хочу получить строку и номер столбца конкретной ячейки, используя ее значение).

Пока это часть рабочего кода, который я использовал для редактирования данных:

  // Copy the format from A1:C1 and paste it into A2:C5, so the data in 
// each column has the same background.             
requests.add(new Request()
                        .setCopyPaste(new CopyPasteRequest()
                                .setSource(new GridRange()
                                        .setSheetId(0)
                                        .setStartRowIndex(0)
                                        .setEndRowIndex(1)
                                        .setStartColumnIndex(0)
                                        .setEndColumnIndex(3))
                                .setDestination(new GridRange()
                                        .setSheetId(0)
                                        .setStartRowIndex(1)
                                        .setEndRowIndex(6)
                                        .setStartColumnIndex(0)
                                        .setEndColumnIndex(3))
                                .setPasteType("PASTE_FORMAT")));

                BatchUpdateSpreadsheetRequest batchUpdateRequest = new BatchUpdateSpreadsheetRequest()
                        .setRequests(requests);

Кто-нибудь может мне помочь, пожалуйста! Заранее спасибо.


person TSR    schedule 26.08.2016    source источник


Ответы (2)


Согласно документации, вы можете найти значение, используя : FindReplaceRequest() и .getFind();

String cellReq = (new FindReplaceRequest().setFind("samuel")).getFind();
person Community    schedule 04.10.2016
comment
@ user6889641, можете ли вы привести краткий пример, когда я проверил, что ответ не содержит найденной строки. Он возвращает только число, если замены были сделаны, если они указаны в запросе. Согласно developers.google.com/sheets/api/guides/batchupdate. , он работает только для замены строки. Я хочу, чтобы вся ROW была извлечена, если строка найдена. - person Harshit; 07.11.2018

Поиск текста пока недоступен для Google Sheet API. Пометьте этот систему отслеживания ошибок FR. чтобы получать уведомления о любых обновлениях.

Обходной путь, основанный на этом SO ответе: «Вы можете получить данные для диапазона, в котором вы ищете, а затем перебрать он ищет совпадение." Вот его фрагмент кода:

/**
* Finds a value within a given range. 
* @param value The value to find.
* @param range The range to search in.
* @return A range pointing to the first cell containing the value, 
* or null if not found.
*/
function find(value, range) {
var data = range.getValues();
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
if (data[i][j] == value) {
return range.getCell(i + 1, j + 1);
}
}
}
return null;
}

ПРИМЕЧАНИЕ. Пример кода находится в google-apps-script.

Как и в этом фрагменте кода, вам нужно сначала установить диапазон, а затем проверить, будет ли значение соответствовать внутри диапазона.

person Mr.Rebot    schedule 27.08.2016