首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Google脚本中添加和删除边框

如何在Google脚本中添加和删除边框
EN

Stack Overflow用户
提问于 2021-01-18 12:48:56
回答 1查看 2.2K关注 0票数 0

目标:

  1. 根据下表H列中的单元格是否为null,向单元格范围中添加边框。该表有名称和总票号,它将根据我使用查询函数提取的数据的特定日期自动出现或消失。我希望能够在H列的单元格中添加边框。

例如,假设第一次在单元格H3中出现一个名为"John A“的名称。在本例中,我希望能够向H3:I3添加边框。如果"John“出现在"John”下面,那么我想给H4:I4添加另一个边框。诸若此类。

  1. 删除边框,具体取决于是否删除了H列单元格中的值。

例如,如果单元格H4自动删除"John“,那么我也要删除H4:I4的边框。如果"John A“也从单元格H3中删除,那么我也要删除H3:I3的边框。

当前代码:,我试图将位于另一个文件中的onEdit()函数的参数传递给insertDynamicBorders()函数,因为我认为这将是事件触发的问题。

代码语言:javascript
运行
复制
function insertDynamicBorders(row) {
  var statusSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Status");

  // Columns
  dateColumn = 1;

  if (row > 16) {
    if (statusSheet.getRange("H3") != null ) {
      var cell = statusSheet.getRange("H3:I3");
      cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
    } else {
      var cell = statusSheet.getRange("H3:I3");
      cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
    if (statusSheet.getRange("H4") != null) {
      var cell = statusSheet.getRange("H4:I4");
      cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
    } else {
      var cell = statusSheet.getRange("H4:I4");
      cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
    if (statusSheet.getRange("H5") != null) {
      var cell = statusSheet.getRange("H5:I5");
      cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
    } else {
      var cell = statusSheet.getRange("H5:I5");
      cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
    if (statusSheet.getRange("H6") != null) {
      var cell = statusSheet.getRange("H6:I6");
      cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
    } else {
      var cell = statusSheet.getRange("H6:I6");
      cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
    if (statusSheet.getRange("H7") != null) {
      var cell = statusSheet.getRange("H7:I7");
      cell.setBorder(true, true, true, true, true, true, "black", SpreadsheetApp.BorderStyle.SOLID);
    } else {
      var cell = statusSheet.getRange("H7:I7");
      cell.setBorder(false, false, false, false, false, false, "black", SpreadsheetApp.BorderStyle.SOLID);
    }
  }
}

发行:

  1. 当名称出现在H列的单元格中时,边框不会添加,但是,当我使用查询函数对数据源进行直接更改时,边框将添加边框。
  2. 当边框被添加时,它们被添加到单元格范围中,其中包括名称,也不包括在列H的单元格中。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 10:28:21

当使用Apps脚本触发器时,特别是使用onEdit**,时,注意 [following](https://developers.google.com/apps-script/guides/triggers#getting_started):**是很重要的

当用户更改电子表格中的值时,onEdit(e)将运行。 脚本执行和API请求不会导致触发器运行。例如,调用Range.setValue()编辑单元格并不会导致电子表格的onEdit触发器运行。

考虑到上述因素,你想要的东西就不能直接实现。

解决办法

在这种情况下,您可以做的是使用可安装触发器并创建一个时间驱动触发器。您可以创建一个脚本,该脚本将检查电子表格中与前一个版本相比发生的任何更改。因为这必须由您以编程的方式完成,所以这是一个更麻烦的旁路。

另一个选项(仍然使用时间驱动触发器)是检查列HI中的最后一行(如您的示例所示),并考虑只将所需的值插入这些列的事实。

参考文献

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

https://stackoverflow.com/questions/65774834

复制
相关文章

相似问题

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