Apps Script provides the full Google Sheets formatting API through the Range object. You can set background colors, font styles, borders, alignment, and more — on individual cells or entire ranges at once.
Formatting the Header Row
function formatHeaderRow ( ) {
var sheet = SpreadsheetApp
. getActiveSpreadsheet ( )
. getSheetByName ( "Sales Tracker" ) ;
var header = sheet . getRange ( 1 , 1 , 1 , 8 ) ; // Row 1, columns A–H
header
. setBackground ( "#1a73e8" )
. setFontColor ( "#ffffff" )
. setFontWeight ( "bold" )
. setFontSize ( 11 )
. setHorizontalAlignment ( "center" )
. setVerticalAlignment ( "middle" ) ;
sheet . setRowHeight ( 1 , 36 ) ;
Logger . log ( "Header formatted." ) ;
}
Color-Coding Rows by Deal Status
function colorCodeByStatus ( ) {
var sheet = SpreadsheetApp
. getActiveSpreadsheet ( )
. getSheetByName ( "Sales Tracker" ) ;
var data = sheet . getRange ( 2 , 1 , sheet . getLastRow ( ) - 1 , 8 ) . getValues ( ) ;
data . forEach ( function ( row , i ) {
var status = row [ 6 ] ; // Column G
var rowRange = sheet . getRange ( i + 2 , 1 , 1 , 8 ) ;
if ( status === "Closed" ) {
rowRange . setBackground ( "#c6efce" ) ; // Green
} else if ( status === "In Progress" ) {
rowRange . setBackground ( "#ffeb9c" ) ; // Yellow
} else if ( status === "Pending" ) {
rowRange . setBackground ( "#fce4d6" ) ; // Orange
} else {
rowRange . setBackground ( null ) ;
}
} ) ;
Logger . log ( "Rows color-coded by status." ) ;
}
With the sample data, Sarah Johnson and Lisa Park get green rows, while Mark Chen gets yellow.
Setting Borders
function addBordersToDataRange ( ) {
var sheet = SpreadsheetApp
. getActiveSpreadsheet ( )
. getSheetByName ( "Sales Tracker" ) ;
var dataRange = sheet . getRange ( 1 , 1 , sheet . getLastRow ( ) , 8 ) ;
dataRange . setBorder (
true , true , true , true , // top, left, bottom, right
true , true , // vertical, horizontal inner borders
"#cccccc" ,
SpreadsheetApp . BorderStyle . SOLID
) ;
Logger . log ( "Borders applied." ) ;
}
Bolding and Resizing Specific Columns
function styleAmountColumn ( ) {
var sheet = SpreadsheetApp
. getActiveSpreadsheet ( )
. getSheetByName ( "Sales Tracker" ) ;
// Bold the Amount column header
sheet . getRange ( "D1" ) . setFontWeight ( "bold" ) ;
// Right-align and bold all Amount values
var amountRange = sheet . getRange ( 2 , 4 , sheet . getLastRow ( ) - 1 , 1 ) ;
amountRange
. setHorizontalAlignment ( "right" )
. setFontWeight ( "bold" )
. setFontColor ( "#1a73e8" ) ;
// Auto-resize all columns
sheet . autoResizeColumns ( 1 , 8 ) ;
Logger . log ( "Amount column styled." ) ;
}
Full Dashboard Formatting Function
A single function that applies all formatting to the Sales Tracker:
function applyDashboardFormatting ( ) {
var sheet = SpreadsheetApp
. getActiveSpreadsheet ( )
. getSheetByName ( "Sales Tracker" ) ;
var lastRow = sheet . getLastRow ( ) ;
// Header
sheet . getRange ( 1 , 1 , 1 , 8 )
. setBackground ( "#1a73e8" )
. setFontColor ( "#ffffff" )
. setFontWeight ( "bold" )
. setFontSize ( 11 )
. setHorizontalAlignment ( "center" ) ;
sheet . setRowHeight ( 1 , 36 ) ;
// Data rows
var data = sheet . getRange ( 2 , 1 , lastRow - 1 , 8 ) . getValues ( ) ;
data . forEach ( function ( row , i ) {
var bg = row [ 6 ] === "Closed" ? "#c6efce"
: row [ 6 ] === "In Progress" ? "#ffeb9c"
: "#fce4d6" ;
sheet . getRange ( i + 2 , 1 , 1 , 8 ) . setBackground ( bg ) ;
} ) ;
// Borders
sheet . getRange ( 1 , 1 , lastRow , 8 ) . setBorder (
true , true , true , true , true , true , "#cccccc" , SpreadsheetApp . BorderStyle . SOLID
) ;
// Auto-resize
sheet . autoResizeColumns ( 1 , 8 ) ;
// Freeze header row
sheet . setFrozenRows ( 1 ) ;
Logger . log ( "Dashboard formatting applied." ) ;
}