in marketing-analytics/activation/sheets-based-installer/src/apps_script/0_common/enhanced_sheet.js [354:390]
setConditionalFormat_(columns, conditionalFormats) {
let requiredColumnLetter;
const requiredIndex = columns.indexOf(conditionalFormats.requiredColumn_);
if (requiredIndex > -1) {
requiredColumnLetter = getColumnLetter(requiredIndex);
} else {
console.warn('No required column, so REQUIRED is not supported.');
}
const rules = [];
columns.forEach((field, index) => {
if (!conditionalFormats[field]) return;
const [requried, type] = conditionalFormats[field].split('_');
const columnLetter = getColumnLetter(index);
const range = this.sheet.getRange(`${columnLetter}2:${columnLetter}`);
const conditions = [];
if (requried === 'REQUIRED' && requiredColumnLetter) {
conditions.push(
`AND(NOT(ISBLANK($${requiredColumnLetter}2)),ISBLANK($${columnLetter}2))`
)
}
if (type) {
conditions.push(
`AND(NOT(ISBLANK($${columnLetter}2)),NOT(IS${type}($${columnLetter}2)))`
)
}
const fomular = conditions.length > 1
? `=OR(${conditions.join(',')})`
: `=${conditions[0]}`;
const rule = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied(fomular)
.setBackground('#F5AEA9')
.setRanges([range])
.build();
rules.push(rule);
});
this.sheet.setConditionalFormatRules(rules);
}