[英]Programmatically colour row when specific cell contains 0
我正在寻找一个脚本,当K列中的单元格包含0
时,该脚本将变为绿色行。
例如,当K5为0
时,我希望B5至L5变为绿色。
有条件的格式化是不够的,因为我有些行现在不需要格式化,但是将来可能会格式化。
看错了! 对此有一点乐趣。
打开工作表并选择要设为绿色的范围,然后在菜单中进入“行魔术” |“魔术”。 设定目标。 系统将提示您输入该范围的名称。
然后去行魔术| 在您要注意零的字段上附加。 输入要更新的范围的名称(列出所有范围的名称)。 现在,在字段中输入零,范围将变为绿色背景! 我的电脑有轻微的延迟〜1秒。
这是我的第一个应用程序脚本,因此很有可能可以进行很多改进。
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Row Magic')
.addItem('Set Target', 'setTarget')
.addItem('Attach', 'attachToRange')
.addToUi();
}
function onEdit(e) {
//var range = e.range;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// Returns the active cell
var cell = sheet.getActiveCell();
var value = cell.getValue();
var md = sheet.getDeveloperMetadata();
md.forEach(function(m) {
if (m.getKey().indexOf('rangeTarget_') === 0) {
var keySplit = m.getKey().split('_');
var row = keySplit[1];
var column = keySplit[2];
if (row == cell.getRow() && column == cell.getColumn()) {
var rangeName = m.getValue();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ranges = ss.getNamedRanges();
ranges[0].getName()
ranges.forEach(function (r) {
if (r.getName() === rangeName) {
if (value === 0) {
r.getRange().setBackground('#00FF00');
}
else {
r.getRange().setBackground('#FFFFFF');
}
}
});
}
}
});
}
function setTarget() {
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Enter name', ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() == ui.Button.OK) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();
ss.setNamedRange(response.getResponseText(), range)
}
}
function attachToRange() {
var ui = SpreadsheetApp.getUi();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// Returns the active cell
var cell = sheet.getActiveCell();
var namedRanges = ss.getNamedRanges();
var rangeNames = [];
namedRanges.forEach(function(r) {
rangeNames.push(r.getName());
});
var response = ui.prompt('Enter range to target\n' + rangeNames.join('\n'), ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() === ui.Button.OK) {
var r = response.getResponseText();
if (rangeNames.indexOf(r) > -1) {
var row = cell.getRow();
var column = cell.getColumn();
sheet.addDeveloperMetadata('rangeTarget_'+row+'_'+column, r);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.