我正在使用电子表格进行调度,并保持干净我使用的脚本将根据日期更改行字体样式,因此如果日期已经过去,则字体将变为斜体,变为灰色,并有直通。该脚本运行良好,但在使用时会覆盖电子表格中的所有公式。有没有办法编辑公式,所以它不会影响某些单元格? (对于尚未发生日期的行,它不应该执行任何操作。)
这是我正在使用的脚本:
function formatOnDate() {
var sh = SpreadsheetApp.getActive().getActiveSheet();
var range = sh.getDataRange();
var data = range.getValues();
var color = '#AAA';// value you want
var style = 'italic';// value you want
var line = 'line-through';// value you want
var fontColors = range.getFontColors();// get all font colors
var fontLines = range.getFontLines();// lines
var fontStyles = range.getFontStyles();//style
var today = new Date();// include today in sheet
//var today = new Date(new Date().setDate(new Date().getDate()-1));// exclude today... uncomment the one you use
for(var n=1 ; n<data.length ; n++){ // start on row 2 so that headers are not changed
if(data[n][0] < today){
for(var c in data[0]){
fontColors[n][c]=color;//set format
fontLines[n][c]=line;//set format
fontStyles[n][c]=style;//set format
}
}
}
//sh.getRange(1,1,data.length,data[0].length).clear();
// now update sheet with new data and style
sh.getRange(1,1,data.length,data[0].length).setValues(data).setFontColors(fontColors).setFontLines(fontLines).setFontStyles(fontStyles);
}
是否可以在不覆盖单元格中的公式的情况下调整字体样式?是否可以不影响尚未发生的日期的行?如果没有,是否可能不影响某些列? (列N-Q是具有公式的列)。
答案 0 :(得分:0)
在您的脚本中,data
未被修改。此外,fontColors
,fontLines
和fontStyles
的数组长度也不会被修改。那么这个修改怎么样?
此修改后的脚本不会覆盖数据。只有FontColors,FontLines和FontStyles会反映到range
。所以每个细胞的配方都不会受到影响。
sh.getRange(1,1,data.length,data[0].length).setValues(data).setFontColors(fontColors).setFontLines(fontLines).setFontStyles(fontStyles);
range.setFontColors(fontColors).setFontLines(fontLines).setFontStyles(fontStyles);
如果我误解了你的问题,我很抱歉。