使用Google Java API设置单元格背景颜色和文本大小

使用Google Java API设置单元格背景颜色和文本大小,java,google-sheets,google-spreadsheet-api,Java,Google Sheets,Google Spreadsheet Api,我想设置电子表格单元格背景颜色和文本大小。我使用这个Java代码将文本设置到单元格中,但是我找不到一个解决方案来设置样式 CellData setUserEnteredValue = new CellData() .setUserEnteredValue(new ExtendedValue() .setStringValue("cell text")); 有什么解决方案吗?AFAIK这在Java电子表格API中是不可能的,您必须使用应用程

我想设置电子表格单元格背景颜色和文本大小。我使用这个Java代码将文本设置到单元格中,但是我找不到一个解决方案来设置样式

CellData setUserEnteredValue = new CellData()
            .setUserEnteredValue(new ExtendedValue()
                .setStringValue("cell text"));

有什么解决方案吗?

AFAIK这在Java电子表格API中是不可能的,您必须使用应用程序脚本;

从他们的文件中


更新
,v4现在提供了执行此操作的功能。

您不能更改
CellData
对象的背景色或字体大小。相反,您需要迭代某些单元格范围。从那里,可以根据单元格值设置背景色。然后,您可以使代码可靠,就像两步流程一样。 从另一个答案来看:

//Sets the row color depending on the value in the "Status" column.
function setRowColors() {
  var range = SpreadsheetApp.getActiveSheet().getDataRange();
  var statusColumnOffset = getStatusColumnOffset();

  for (var i = range.getRow(); i < range.getLastRow(); i++) {
    rowRange = range.offset(i, 0, 1); //Play with this range to get your desired columns.
    status = rowRange.offset(0, statusColumnOffset).getValue(); //The text value we need to evaluate.
    if (status == 'Completed') {
      rowRange.setBackgroundColor("#99CC99");
    } else if (status == 'In Progress') {
      rowRange.setBackgroundColor("#FFDD88");    
    } else if (status == 'Not Started') {
      rowRange.setBackgroundColor("#CC6666");          
    }
  }
}
//根据“状态”列中的值设置行颜色。
函数setRowColors(){
var range=SpreadsheetApp.getActiveSheet().getDataRange();
var statusColumnOffset=getStatusColumnOffset();
对于(var i=range.getRow();i
看起来有一个类正是为此而设计的:

特别是以下方法:

public cell格式setBackgroundColor(
backgroundColor)

public CellFormat setTextFormat(
textFormat)

我已经很久没有用Java编写代码了,所以我不会尝试给您一个工作代码示例,但我认为您可以很容易地从中找到它

编辑:下面是一个从代码开始的基本示例:

CellData setUserEnteredValue = new CellData()
            .setUserEnteredValue(new ExtendedValue()
                .setStringValue("cell text"));

CellFormat myFormat = new CellFormat();
myFormat.setBackgroundColor(new Color().setRed(1)); // red background
myFormat.setTextFormat(new TextFormat().setFontSize(16)); // 16pt font

setUserEnteredValue.setUserEnteredFormat(myFormat);

我不得不接受一大堆无用的答案,但这对我来说很有效。给你:

requests.add(new Request()
                .setRepeatCell(new RepeatCellRequest()
                        .setCell(new CellData()
                                .setUserEnteredValue( new ExtendedValue().setStringValue("cell text"))
                                .setUserEnteredFormat(new CellFormat()
                                        .setBackgroundColor(new Color()
                                                .setRed(Float.valueOf("1"))
                                                .setGreen(Float.valueOf("0"))
                                                .setBlue(Float.valueOf("0"))
                                        )
                                        .setTextFormat(new TextFormat()
                                                .setFontSize(15)
                                                .setBold(Boolean.TRUE)
                                        )
                                )
                        )
                        .setRange(new GridRange()
                                .setSheetId(sheetID)
                                .setStartRowIndex(1)
                                .setEndRowIndex(0)
                                .setStartColumnIndex(0)
                                .setEndColumnIndex(1)
                        )
                        .setFields("*")
                )
        );

我不知道这在Java中是否有效,但是你可以试试这个方法,或者你可以使用一个你能给我看代码示例吗?只是为了清楚。。您是否在寻找类似的内容:?是的,我想使用Java API v4Well获得相同的结果,从这里开始:除了最初的两行之外,大部分内容似乎都是相同的:var ss=SpreadsheetApp.getActiveSpreadsheet();var sheet=ss.getSheets()[0];我只是在编辑下面添加了一个,使用了我最初提到的javadoc链接。请用setUserEnteredFormat更新答案。setEffectiveFormat不起作用。@PeterPenzov告诉我这是否有效,如果有效,我将用“向下读取”更新我的答案。要使颜色生效,您必须在UpdateCellsRequest字段上设置“userEnteredFormat.backgroundColor”,如下所示:.setFields(“userEnteredValue,userEnteredFormat.backgroundColor”)或.setFields(“*”)覆盖单元格的所有字段的步骤
CellData setUserEnteredValue = new CellData()
            .setUserEnteredValue(new ExtendedValue()
                .setStringValue("cell text"));

CellFormat myFormat = new CellFormat();
myFormat.setBackgroundColor(new Color().setRed(1)); // red background
myFormat.setTextFormat(new TextFormat().setFontSize(16)); // 16pt font

setUserEnteredValue.setUserEnteredFormat(myFormat);
requests.add(new Request()
                .setRepeatCell(new RepeatCellRequest()
                        .setCell(new CellData()
                                .setUserEnteredValue( new ExtendedValue().setStringValue("cell text"))
                                .setUserEnteredFormat(new CellFormat()
                                        .setBackgroundColor(new Color()
                                                .setRed(Float.valueOf("1"))
                                                .setGreen(Float.valueOf("0"))
                                                .setBlue(Float.valueOf("0"))
                                        )
                                        .setTextFormat(new TextFormat()
                                                .setFontSize(15)
                                                .setBold(Boolean.TRUE)
                                        )
                                )
                        )
                        .setRange(new GridRange()
                                .setSheetId(sheetID)
                                .setStartRowIndex(1)
                                .setEndRowIndex(0)
                                .setStartColumnIndex(0)
                                .setEndColumnIndex(1)
                        )
                        .setFields("*")
                )
        );