更改字体大小,但仅适用于角蛋白细胞

Ole*_*ner 3 google-apps-script

我收到 if 语句的语法错误。如果有人能告诉我我做错了什么,那就太好了。

我想做的是在编辑某个单元格时将文本字体大小更改为 14。但现在的问题是我只需要某些单元格的字体大小为 14。从 A3 开始的每 5 行应该为字体大小 14。

所以: A3 - 字体大小 14 A8 - 字体大小 14 A13 - 字体大小 14 A18 - 字体大小 14 A23 - 字体大小 14 A28 - 字体大小 14 等等

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = e.range;

  if (range.getA1Notation().substr(range.getA1Notation().length-1, range.getA1Notation().length)) == "3" || range.getA1Notation().substr(range.getA1Notation().length-1, range.getA1Notation().length)) == "8") {
    var cell = sheet.getRange(range)
    cell.setFontSize(14);
  }
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ach 6

你的超长条件可以简化为range.getRow() % 5 == 3

表面上,事件对象中的范围是通过值而不是引用复制的,因此您不能只是说,e.range.setFontSize(14)但它应该相当于活动范围,除非您正在做非常快的事情。

它没有设置正确的字体大小的原因是您将范围作为范围参数提供给它,其中它必须是索引或 A1 表示法。

简而言之,您可以将代码缩短为

function onEdit(e) {
  if (e.range.getRow() % 5 == 3) {
    SpreadsheetApp.getActiveRange().setFontSize(14);
  }
}
Run Code Online (Sandbox Code Playgroud)

或者

function onEdit(e) {
  if (e.range.getRow() % 5 == 3) {
    SpreadsheetApp.getActiveSheet().getRange(e.range.getA1Notation()).setFontSize(14);
  }
}
Run Code Online (Sandbox Code Playgroud)

如果你想真正确定的话。

  • 您是从脚本编辑器运行脚本还是实际上进行编辑?如果您从脚本编辑器运行它,则不会传递可读取的事件对象。尝试实际更改电子表格中的某些内容。 (2认同)