Google表格API v4 - 如何获得最后一行的价值?

时间:2016-05-19 18:49:48

标签: android google-sheets google-drive-api google-spreadsheet-api

如何在新的Google表格API v4中获取最后一行的值?

我用它来从表格中获取范围:

mService.spreadsheets().values().get("ID_SHEET", "Sheet1!A2:B50").execute();

如何检测工作表中带有值的最后一行?

5 个答案:

答案 0 :(得分:16)

您可以将范围设置为“A2:D”,这将获取到工作表中的最后一个数据行。

答案 1 :(得分:4)

与其将所有行检索到内存中只是为了获取最后一行中的值,您可以使用 append API 将一个空表附加到工作表的末尾,然后解析响应中返回的范围.然后您可以使用最后一行的索引来请求您想要的数据。

这个例子是用 Python 编写的:

#empty table
table = {
    'majorDimension': 'ROWS',
    'values': []
}

# append the empty table
request = service.spreadsheets().values().append(
    spreadsheetId=SPREADSHEET_ID,
    range=RANGE_NAME,
    valueInputOption='USER_ENTERED',
    insertDataOption='INSERT_ROWS',
    body=table)

result = request.execute()

# get last row index
p = re.compile('^.*![A-Z]+\d+:[A-Z]+(\d+)$')
match = p.match(result['tableRange'])
lastrow = match.group(1)

# lookup the data on the last row
result = service.spreadsheets().values().get(
    spreadsheetId=SPREADSHEET_ID,
    range=f'Sheetname!A{lastrow}:ZZ{lastrow}'
).execute()

print(result)

答案 2 :(得分:2)

我设法通过计算当前表格中的总行数来获得它。 然后将数据附加到下一行。

rowcount = this.mService.spreadsheets().values().get(spreadsheetId, range).execute().getValues().size()

答案 3 :(得分:1)

你不需要。设置一个巨大的范围(例如A2:D5000)以保证所有行都位于其中。我不知道它是否有一些进一步的影响,可能会增加内存消耗或其他什么,但现在没关系。

private List<String> getDataFromApi() throws IOException {
        String spreadsheetId = "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"; 
        String range = "A2:D5000";
        List<String> results = new ArrayList<String>();
        ValueRange response = this.mService.spreadsheets().values()
                .get(spreadsheetId, range)
                .execute();
        List<List<Object>> values = response.getValues();
        if (values != null) {
            results.add("Name, Major");
            for (List row : values) {
                results.add(row.get(0) + ", " + row.get(3));
            }
        }
        return results;
    }

查看循环for (List row : values)。如果表中有两行,则会在values列表中获得两个元素。

答案 4 :(得分:0)

?Google Sheets API v4没有可帮助您获取工作表中最后写入行的索引的响应(行下方的所有单元格均为空)。不幸的是,您必须解决此问题并将所有工作表行都提取到内存中(如果我记错了,我敦促您发表评论)

示例:

spreadsheet_id = '1TfWKWaWypbq7wc4gbe2eavRBjzuOcpAD028CH4esgKw'
range = 'Sheet1!A:Z'

rows = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range).execute().get('values', [])
last_row = rows[-1] if rows else None
last_row_id = len(rows)
print(last_row_id, last_row)

输出:

13 ['this', 'is ', 'my', 'last', 'row']

enter image description here


?如果您希望在最后一行附加更多行,请see this