使用 Google Sheets API v4 更改行的背景颜色

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)