S.O*_*O.S 6 java google-sheets-api
我正在尝试更改 Google 电子表格中第一行(标题)的背景颜色。基于几个小时的研究和阅读,我想出了以下代码:
Request updateBackgroundColorRequest = new Request();
UpdateCellsRequest updateCellsRequest = new UpdateCellsRequest();
CellFormat cellFormat = new CellFormat();
Color color = new Color();
color.setRed((float) 246);
color.setGreen((float) 178);
color.setBlue((float) 107);
cellFormat.setBackgroundColor(color);
GridRange gridRange = new GridRange();
gridRange.setStartRowIndex(0);
gridRange.setEndRowIndex(1);
gridRange.setStartColumnIndex(0);
gridRange.setEndColumnIndex(14);
updateCellsRequest.setRange(gridRange);
String field = "userEnteredFormat.backgroundColor";
updateCellsRequest.setFields(field);
updateBackgroundColorRequest.setUpdateCells(updateCellsRequest);
requestList.add(updateBackgroundColorRequest);
batchUpdateSpreadsheetRequest.setRequests(requestList);
Spreadsheets.BatchUpdate batchUpdate = service.spreadsheets()
.batchUpdate(spreadsheetId, batchUpdateSpreadsheetRequest);
batchUpdate.execute();
Run Code Online (Sandbox Code Playgroud)
然而,虽然我能够成功执行此代码(API 没有返回错误),但背景颜色根本没有改变(我期望它更改为橙色,但它仍然是白色)。
我错过了什么?
小智 2
遇到同样的问题。谢谢你的代码!这对我有很大帮助!
所以问题就出在了线上。
updateBackgroundColorRequest.setUpdateCells(updateCellsRequest);
Run Code Online (Sandbox Code Playgroud)
您需要RepeatCellRequest类而不是UpdateCellRequest。
简单的请求集就像
requestList.add(new Request().setRepeatCell(
new RepeatCellRequest().
setCell(cellData).
setRange(gridRange).
setFields("*")));
Run Code Online (Sandbox Code Playgroud)
我所有的代码如下所示:
List<Request> requestList = new ArrayList<>();
CellFormat cellFormat = new CellFormat(); //setting cell color
Color color = new Color();
color.setRed(246f);
color.setGreen(178f);
color.setBlue(107f);
cellFormat.setBackgroundColor(color);
CellData cellData = new CellData();
cellData.setUserEnteredFormat(cellFormat);
GridRange gridRange = new GridRange(); //setting grid that we will paint
gridRange.setSheetId(1115615634); //you can find it in your URL - param "gid"
gridRange.setStartRowIndex(0);
gridRange.setEndRowIndex(1);
gridRange.setStartColumnIndex(0);
gridRange.setEndColumnIndex(14);
requestList.add(new Request().setRepeatCell(new RepeatCellRequest().setCell(cellData).setRange(gridRange).setFields("userEnteredFormat.backgroundColor")));
BatchUpdateSpreadsheetRequest batchUpdateSpreadsheetRequest = new BatchUpdateSpreadsheetRequest();
batchUpdateSpreadsheetRequest.setRequests(requestList);
final Sheets.Spreadsheets.BatchUpdate batchUpdate = sheetsService.
spreadsheets().batchUpdate("yourSpreadSheetId - find it in URL", batchUpdateSpreadsheetRequest);
batchUpdate.execute();
Run Code Online (Sandbox Code Playgroud)