使用Google Java API设置单元格背景颜色和文本大小
我想设置电子表格单元格背景颜色和文本大小。我使用这个Java代码将文本设置到单元格中,但是我找不到一个解决方案来设置样式使用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中是不可能的,您必须使用应用程
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("*")
)
);