javascript - 谷歌应用程序脚本,用于根据另一个单元格的值对一个单元格进行条件颜色格式化

标签 javascript google-apps-script google-sheets

我正在尝试整理一个谷歌应用程序脚本,该脚本根据另一个单元格的值更改一个单元格的字体颜色。如果单元格 B2 > D2,将 B2 的字体颜色更改为红色。问题是我没有使用 javascript 的经验......所以我复制粘贴和编辑在一起的小脚本不起作用。

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var columnO = sheet.getRange(2, 2, sheet.getLastRow()-1, 1);
  var oValues = columnO.getValues();
  var column1 = sheet.getRange(2, 4, sheet.getLastRow()-1, 1);
  var oValues1 = columnO.getValues();

  for (var i = 0; i < oValues.length; i++) {
    if (oValues[i][0] > oValues1[i][0]) {
      sheet.getRange(i, 1, 1, 1).setFontColors('red');
    }
  }
}

我想扩展此脚本以便能够执行以下操作:如果 B2 > D2 为红色,如果 B2 < C2 为蓝色,否则为绿色。

最佳答案

我首先看到的是第 6 行的错误/拼写错误:column0.getValues() 应该是 column1.getValues()

另一个错误是在 for 循环中,您在其中 getRange(i, 1, 1, 1)。关于你写的问题,你想更改 B2 单元格颜色,并且此语句正在更改 A 列。此外,行索引应从 2 而不是 0 开始。

在这样的脚本中要考虑的另一件重要事情是使用批处理函数,因为它会大大加快速度,例如

function formatting() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var values = sheet.getRange(2, 2, sheet.getLastRow()-1, 3).getValues(); //B, C and D
  var colors = [];  

  for (var i = 0; i < values.length; i++)
    colors.push([values[i][0] > values[i][2] ? 'red' :
                 values[i][0] < values[i][2] ? 'blue' : 'green']);
  sheet.getRange(2, 2, colors.length, 1).setFontColors(colors);
}

关于javascript - 谷歌应用程序脚本,用于根据另一个单元格的值对一个单元格进行条件颜色格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856491/

相关文章:

javascript - 在 JavaScript 中执行存储为字符串的函数的推荐方法,而不是使用 eval

javascript - App Script 调试成功但执行失败,为什么?

google-apps-script - 从 Google 电子表格中的纯文本单元格中删除的字符串在 ISBLANK 函数中产生 TRUE

javascript - 谷歌脚本 : appendRow always on top of the sheet

google-apps-script - 如何获取所有附有特定标签的草稿消息

javascript - 如何使用 Apps 脚本从电子表格数据自动填充 HTML 字段?

javascript - Promise Pending 不会解决或拒绝

javascript - 单击时,将类切换到父级之外

google-apps-script - 如何从 Google Apps Script 连接到 Facebook Graph API?

google-apps-script - 使用 Google Apps 脚本从 Google 表格数据表复制到 Google 文档表