Google 将条件格式转换为 Apps 脚本的工作表
Google Sheets converting Conditional Formatting to Apps Scripts
我确信没有简单的方法可以做到这一点,但我想我会问。我有一个 sheet,上面有相当数量的条件格式,但是,与我共享 sheet 的人已经 copy/pasting 移动行,这会加剧破坏格式。我正在尝试为他们转换为脚本。主要是基于其他单元格信息的背景颜色。
即:如果 A-D 列第 4 行的任何单元格中包含信息,则 K4 将为红色。一旦K4里面有信息,背景就会变成白色。
我的条件格式是:=AND(OR(ISBLANK(A4)=FALSE,ISBLANK(B4)=FALSE,ISBLANK(C4)=FALSE,ISBLANK(D4)=FALSE),ISBLANK(K4) =真)。
另一个是当任何单元格有一个特定的术语“LWOS”时,整行都有紫色背景和删除线。
提前致谢。
我知道当您是新手时,编写脚本很难,所以我理解您并决定我将给您一个应该适用于您的代码的代码。如果您想了解更多,请按照 Endothermic_Dragon 的建议学习 Apps Script。
代码:
function onEdit(e) {
// Get active spreadsheet and sheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
// Get row and column of the current cell edited
var editRow = e.range.getRow();
var editColumn = e.range.getColumn();
// If edited cell is below row 4:
if(editRow > 3) {
// Get row and K cell for checking values later
var rowRange = sheet.getRange("A" + editRow + ":D" + editRow)
var rowValues = rowRange.getValues();
var kCell = sheet.getRange("K" + editRow);
var kValue = kCell.getValue();
var rowHasValue = rowValues[0].some(el => !!el);
var rowHasLWOS = rowValues[0].includes("LWOS");
var kHasValue = kValue != "";
// If edited column is in A-D
if(editColumn < 5) {
// If we see a value on that row and K row doesnt have value
if(rowHasValue && !kHasValue){
// Set K cell to red
kCell.setBackground("red");
}
// If columns A-D of the edited row has LWOS
// (cell value is "LWOS", not cell containing LWOS)
if (rowHasLWOS){
// Set row to purple and strikethrough
sheet.getRange(editRow + ":" + editRow).setBackground("purple").setFontLine("line-through");
}
}
// If edited column is K
if(editColumn == 11) {
// If row doesnt have LWOS, proceed with checking the K value
if(!rowHasLWOS) {
// If edited value of K has value
if(kHasValue) {
// Set K to white
sheet.getRange("K" + editRow).setBackground("white");
}
// If K value was deleted and A-D has values
if(rowHasValue && !kHasValue) {
// Set K back to red
sheet.getRange("K" + editRow).setBackground("red");
}
}
}
}
}
输出:
上面有评论,希望您至少能理解代码的作用和工作原理。
有关详细信息,请查看您可以在下面学习的参考资料。
参考文献:
我确信没有简单的方法可以做到这一点,但我想我会问。我有一个 sheet,上面有相当数量的条件格式,但是,与我共享 sheet 的人已经 copy/pasting 移动行,这会加剧破坏格式。我正在尝试为他们转换为脚本。主要是基于其他单元格信息的背景颜色。
即:如果 A-D 列第 4 行的任何单元格中包含信息,则 K4 将为红色。一旦K4里面有信息,背景就会变成白色。
我的条件格式是:=AND(OR(ISBLANK(A4)=FALSE,ISBLANK(B4)=FALSE,ISBLANK(C4)=FALSE,ISBLANK(D4)=FALSE),ISBLANK(K4) =真)。
另一个是当任何单元格有一个特定的术语“LWOS”时,整行都有紫色背景和删除线。
提前致谢。
我知道当您是新手时,编写脚本很难,所以我理解您并决定我将给您一个应该适用于您的代码的代码。如果您想了解更多,请按照 Endothermic_Dragon 的建议学习 Apps Script。
代码:
function onEdit(e) {
// Get active spreadsheet and sheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
// Get row and column of the current cell edited
var editRow = e.range.getRow();
var editColumn = e.range.getColumn();
// If edited cell is below row 4:
if(editRow > 3) {
// Get row and K cell for checking values later
var rowRange = sheet.getRange("A" + editRow + ":D" + editRow)
var rowValues = rowRange.getValues();
var kCell = sheet.getRange("K" + editRow);
var kValue = kCell.getValue();
var rowHasValue = rowValues[0].some(el => !!el);
var rowHasLWOS = rowValues[0].includes("LWOS");
var kHasValue = kValue != "";
// If edited column is in A-D
if(editColumn < 5) {
// If we see a value on that row and K row doesnt have value
if(rowHasValue && !kHasValue){
// Set K cell to red
kCell.setBackground("red");
}
// If columns A-D of the edited row has LWOS
// (cell value is "LWOS", not cell containing LWOS)
if (rowHasLWOS){
// Set row to purple and strikethrough
sheet.getRange(editRow + ":" + editRow).setBackground("purple").setFontLine("line-through");
}
}
// If edited column is K
if(editColumn == 11) {
// If row doesnt have LWOS, proceed with checking the K value
if(!rowHasLWOS) {
// If edited value of K has value
if(kHasValue) {
// Set K to white
sheet.getRange("K" + editRow).setBackground("white");
}
// If K value was deleted and A-D has values
if(rowHasValue && !kHasValue) {
// Set K back to red
sheet.getRange("K" + editRow).setBackground("red");
}
}
}
}
}
输出:
上面有评论,希望您至少能理解代码的作用和工作原理。
有关详细信息,请查看您可以在下面学习的参考资料。
参考文献: