Google表格的宏,用于根据输入文本更改单元格背景颜色

时间:2019-04-10 05:29:36

标签: google-apps-script google-sheets

在以下情况下,我想在Google工作表中创建一个宏

在工作表列的 say列J 中,允许的文本输入为“ A”,“ B”和“ C”。

一旦我将ABC(在第J列中)放入,单元格背景色应更改为“绿色”,“黄色”和“红色”。

我该怎么做?

我对宏不是很了解,我只是有要做的事情。 我可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

  • 仅在将“ A”,“ B”和“ C”输入到“ J”列时,才想更改已编辑单元格的背景色。
  • 标题和标签中的
  • “ Google表格宏”是Google Apps脚本。

如果我的理解是正确的,那么这两个示例脚本又如何呢?请认为这只是几个答案之一。

示例脚本1:

在此示例脚本中,使用了简单触发器的“ OnEdit”事件。

流量:

  1. 检查已编辑单元格的范围。如果范围是“ J”列,则脚本将运行。
  2. 检查输入的值。如果输入的值为“ A”,“ B”和“ C”,则背景色将更改。
    • 如果输入的值不是“ A”,“ B”和“ C”,则该值将被删除。

脚本:

请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,请将值放在“ J”列中。

function onEdit(e) {
  if (e.range.getColumn() == 10) {
    var colors = {A: "green", B: "yellow", C: "red"};
    if (Object.keys(colors).indexOf(e.value) > -1) {
      e.range.setBackground(colors[e.value]);
    } else {
      e.range.setValue("");
    }
  }
}

注意:

  • 在此示例脚本中,该脚本针对电子表格中的所有工作表运行。
    • 如果您要运行特定工作表的脚本,请告诉我。
  • 此示例脚本假设将一个值放在一个单元格中的情况。
    • 如果要在“ J”列的几行中输入多个值,请告诉我。

示例脚本2:

在此示例脚本中,将“数据验证”和“条件格式规则”都设置为“ J”列。

流量:

  1. 设置数据验证
    • 这样,只能将“ A”,“ B”和“ C”的值放在“ J”列中。
  2. 设置条件格式规则
    • 通过这种方式,当将值“ A”,“ B”和“ C”放入“ J”列的单元格中时,背景颜色将更改。

脚本:

请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,在脚本编辑器上运行myFunction()。在此脚本中,条件仅通过运行脚本一次即可起作用。

function myFunction() {
  var rangeA1Notation = "J:J"; // Column "J"
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(rangeA1Notation);

  // Set Data Validation
  var rule = SpreadsheetApp.newDataValidation().withCriteria(SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST, [["A", "B", "C"], false]).setAllowInvalid(false).build();
  range.setDataValidation(rule);

  // Set Conditional Format Rule
  var rules = sheet.getConditionalFormatRules();
  rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("A").setBackground("green").setRanges([range]).build());
  rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("B").setBackground("yellow").setRanges([range]).build());
  rules.push(SpreadsheetApp.newConditionalFormatRule().whenTextEqualTo("C").setBackground("red").setRanges([range]).build());
  sheet.setConditionalFormatRules(rules);
}

参考:

如果这些方法不是您想要的,我表示歉意。