Java |如何使用API​​在Google电子表格范围内查找值(行号和列号)?

时间:2016-08-26 01:25:45

标签: java api find google-spreadsheet-api google-sheets-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);

任何人都可以帮助我吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

Google Sheet API尚未提供查找文字。请将此issue tracker FR加注星标以获得有关任何更新的通知。

基于此SO answer的解决方法,“您可以获取要搜索范围的数据,然后迭代查找匹配项。” 这是他的代码片段:

/**
* 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

与此代码段中一样,您需要先设置范围,然后检查值是否在范围内匹配。

答案 1 :(得分:0)

根据documentation,您可以使用以下内容找到该值:FindReplaceRequest().getFind();

String cellReq = (new FindReplaceRequest().setFind("samuel")).getFind();