首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用onEdit()更改单元格背景

用onEdit()更改单元格背景
EN

Stack Overflow用户
提问于 2022-03-24 10:23:30
回答 1查看 59关注 0票数 1

目标是:

  1. 获取已编辑的复选框
  2. 获取范围内的所有复选框(第2-7列,与已编辑复选框相同的行)
  3. 如果所有复选框都返回"TRUE",请在范围内设置背景(第1-7列,同一行与编辑复选框)

好像代码什么都没做。

代码语言:javascript
复制
function onEdit(event) {
  var sheet = event.source.getActiveSheet(), //get edited sheet
      row = event.range.getRow(), // get row needed
      column = 2, // set the starting column
      test,
      userValues = [];
  
  while (column<=7) {
    if (sheet.getValue(row,column) == "TRUE") {
      test = true
    } else {
      test = false;
      break;
    }

    column++;
  }

  if (test) {
    sheet.getRange(row,1,1,7).setBackgrounds("#b6d7a8");
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-24 12:06:28

我相信你的目标如下。

  • 您有"B“到"G”列的复选框。
  • 当选中列"B“到"G”中的所有复选框时,希望将同一行的列"A“到"G”的背景色设置为#b6d7a8
  • 在您的情况下,我猜到当没有选中所有复选框时,您可能希望将背景色设置为默认颜色。

当我看到您的脚本时,循环中使用了getValue。在这种情况下,过程成本将很高。而且,当您使用sheet.getRange(row,1,1,7).setBackgrounds("#b6d7a8")时,您可以使用sheet.getRange(row,1,1,7).setBackground("#b6d7a8")

在这种情况下,下面的修改如何?

修改脚本:

代码语言:javascript
复制
function onEdit(event) {
  var sheetName = "Sheet1"; // Please set the sheet name.
  var range = event.range;
  var sheet = event.source.getActiveSheet();
  if (sheet.getSheetName() != sheetName || range.columnStart < 2 || range.columnStart > 7) return;
  var r = sheet.getRange(range.rowStart, 1, 1, 7)
  var checks = r.offset(0, 1, 1, 6).getValues()[0].every(e => e === true);
  r.setBackground(checks ? "#b6d7a8" : null);
}
  • 使用此脚本时,请选中"B“至"G”列的复选框。当选中列"B“到"G”中的所有复选框时,列"A“到"G”的背景色将更改为#b6d7a8

注意:

  • 此脚本由OnEdit触发器运行。因此,请编辑从"B“列到"G”的复选框单元格。这样,脚本就可以运行了。直接使用脚本编辑器运行此脚本时,会发生错误。请小心这件事。
  • 当不需要检查工作表名称时,也可以使用以下脚本。 函数onEdit(事件){ var range = event.range;var sheet = event.source.getActiveSheet();if (range.columnStart <2 range range.columnStart > 7)返回;var r= sheet.getRange(range.rowStart,1,1,7) var校验= r.offset(0,1,1,6).getValues().every(e => e === true);r.setBackground(检查?"#b6d7a8“:null);

参考文献:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71600696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档