如何在新的Google表格API v4中获取最后一行的值?
我用它来从表格中获取范围:
mService.spreadsheets().values().get("ID_SHEET", "Sheet1!A2:B50").execute();
如何检测工作表中带有值的最后一行?
答案 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']
?如果您希望在最后一行附加更多行,请see this