Google apps script 谷歌表单';用于根据输入文本更改单元格背景颜色的宏

Google apps script 谷歌表单';用于根据输入文本更改单元格背景颜色的宏,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想在GoogleSheet中为下面的例子制作一个宏 在工作表列(如J列)中,允许的文本输入为“a”、“B”和“C” 一旦我将A、B或C(在J第列中)放入单元格,单元格背景颜色应分别变为“绿色”、“黄色”和“红色” 我该怎么做 我对宏了解不多,我只是接到了这样的任务。 我能得到一些帮助吗? 只有当“A”、“B”和“C”被输入到“J”列时,才需要更改编辑单元格的背景色 标题和标签中的“谷歌工作表宏”是谷歌应用程序脚本 如果我的理解是正确的,那么这两个示例脚本如何?请把这看作是几个答案中的一个 示

我想在GoogleSheet中为下面的例子制作一个宏

在工作表列(如J列)中,允许的文本输入为“a”、“B”和“C”

一旦我将
A
B
C
(在
J
第列中)放入单元格,单元格背景颜色应分别变为“绿色”、“黄色”和“红色”

我该怎么做

我对宏了解不多,我只是接到了这样的任务。 我能得到一些帮助吗?

  • 只有当“A”、“B”和“C”被输入到“J”列时,才需要更改编辑单元格的背景色
  • 标题和标签中的“谷歌工作表宏”是谷歌应用程序脚本
如果我的理解是正确的,那么这两个示例脚本如何?请把这看作是几个答案中的一个

示例脚本1: 在这个示例脚本中,使用了简单触发器的“OnEdit”事件

流量:
  • 检查编辑单元格的范围。如果范围是“J”列,则运行脚本
  • 检查输入值。如果输入值为“A”、“B”和“C”,则背景颜色会改变。
    • 如果输入值不是“A”、“B”和“C”,则删除该值
  • 脚本: 请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,请将该值放入“J”列

    注:
    • 在此示例脚本中,该脚本将针对电子表格中的所有图纸运行。
      • 如果要运行特定工作表的脚本,请告诉我
    • 此示例脚本假设一个值放在一个单元格中。
      • 如果您想在“J”列的几行中输入几个值,请告诉我
    示例脚本2: 在这个示例脚本中,将数据验证和条件格式规则都设置为“J”列

    流量:
  • 设置数据验证
    • 这样,只能将“A”、“B”和“C”的值放入“J”列
  • 设置条件格式规则
    • 由此,当在列“J”的单元中放入值“a”、“B”和“C”时,背景色改变
  • 脚本: 请将以下脚本复制并粘贴到脚本编辑器中,然后保存。然后,在脚本编辑器上运行
    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);
    }
    
    参考资料:

    如果这些方法不是你想要的,我道歉。

    嘿,谢谢你的回答。虽然我似乎无法让它发挥作用。我已将
    OnEdit
    函数放入脚本编辑器并保存。现在如何将其应用于J列?@RC0993谢谢您的回复。给您带来不便,我深表歉意。使用示例脚本1时,将以下脚本复制并粘贴到脚本编辑器并保存后,请将值放入“J”列。这样,脚本将自动运行。你可以在上看到官方文件。顺便说一下,请使用电子表格的容器绑定脚本。@RC0993作为测试样本,这个流程如何?1.创建新的电子表格。2.打开脚本编辑器,复制并粘贴示例脚本1并保存它。3.返回工作表,将“A”放在单元格“J1”上。通过这种方式,单元格的背景颜色变为“绿色”。我意识到示例脚本可以工作,但不能在该列中的合并行上工作。嘿,感谢它可以工作:)合并不是问题,实际上我必须删除已经存在的值“A”,然后必须重新放置它
    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);
    }