如何绕过Google表格V4 API不返回空单元格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何绕过Google表格V4 API不返回空单元格相关的知识,希望对你有一定的参考价值。
我有一个包含多个列的谷歌表。我们使用它来保留测试帐户的登录/密码组合。我被要求每90天自动更改每个帐户的密码以满足IT要求。
我决定使用Java和GoogleSheets V4 API。我需要打开工作表并收集所有行并迭代它们。对于每一行,获取登录ID和密码,生成新密码,更改密码,然后使用新密码和旧密码写回行。
现在,我的绊脚石是,对于连续没有内容的单元格,它不会返回任何内容。因此,一行将具有5列,并且一行将具有4列。并且我无法找到哪个列是空的并因此不返回。
是否有解决方案让它返回甚至空单元?
range = "'Functional Users'!A" + rowCount + ":E" + rowCount;
response = service.spreadsheets().values().get(spreadsheetId, range).execute();
values = response.getValues();
cells = values.get(0);
while (cells != null || cells.size() != 0)
{
//Iterate through the columns in the row (NOTE: If a column is blank, it will be missing here)
//Cells(0) = Domain
//Cells(1) = Ignored
//Cells(2) = Account Name
//Cells(3) = Email
//Cells(4) = Password Status (Soon to be deprecated)
if (cells.size() == 5)
{
答案
我有一个类似的用例,并使用“CellFeeds”来解决这个问题。
我从Google电子表格中获取了所有行和列,并且遇到了空/空值被遗漏且列数始终受到影响的问题。
您可以尝试将“return-empty = true”作为查询参数添加到CellFeed的URL中。它将空值返回为null,而不是绕过那些值。
您可以参考this page获取有关使用基于单元格的Feed的详细文档。
以下代码可能会帮助您解决问题:
SpreadsheetService service =
new SpreadsheetService("MyService");
URL SPREADSHEET_FEED_URL = new URL(
"https://spreadsheets.google.com/feeds/cells/"+ "SpreadSheetID" +"/default/public/values"); //Replace SpreadSheetID with your spreadsheet ID, Note: Here the spreadsheet is shared publicly. If it is not published publicly, you need to change the URL and also workaround with the API keys.
// Fetch the first 10 rows of the spreadsheet
URL cellFeedUrl;
try {
cellFeedUrl = new URI(SPREADSHEET_FEED_URL.toString()
+ "?return-empty=true&min-row=1&max-row=10").toURL(); //Here, return-empty=true is important
CellFeed cellFeed = service.getFeed(cellFeedUrl, CellFeed.class);
// Iterate through each cell, printing its value.
for (CellEntry cell : cellFeed.getEntries()) {
System.out.println(cell.getCell().getValue() + " ");
}
}
catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果将为您提供前10行,包括空单元格为null,而不会影响列排列。
希望这可以帮助。
以上是关于如何绕过Google表格V4 API不返回空单元格的主要内容,如果未能解决你的问题,请参考以下文章