【问题标题】:Google Apps Script setValue() AND setBackgroundRGB() for the same cell同一单元格的 Google Apps 脚本 setValue() 和 setBackgroundRGB()
【发布时间】:2021-01-26 20:18:33
【问题描述】:

我正在尝试将 setValue 和 setBackgroundRGB 方法一起用于同一个单元格,但它不起作用。 实际上,只有 setValue 有效。我尝试了以下 if-else 条件的 3 种不同方式,但我总是只看到数字,而背景颜色没有任何变化。如果我删除数字,只有这样我才能看到颜色。同一个单元格可以同时使用吗?

(另外,有没有办法在不使用活动单元格的情况下在特定列中工作?)

function onEdit(e) {
  var active_cell = e.range;
  var active_column = active_cell.getColumn();

      if(active_sheet.getName().startsWith("202")){
        var in_row= 5;
        var exp_row= 6;
        var diff_row = 7;
    
        var income = active_sheet.getRange(in_row,active_column).getValue();
        var expenses = active_sheet.getRange(exp_row,active_column).getValue();
        var diff = income - expenses;
    
        if (active_column >= 2){
          if(income > expenses) {
            active_sheet.getRange(diff_row,active_column).setBackgroundRGB(255,0,0).setValue(diff);
          } else if (income == expenses) {
            active_sheet.getRange(diff_row,active_column).setValue(diff).setBackgroundRGB(0,255,0);
          } else {
            active_sheet.getRange(diff_row,active_column).setValue(diff);
            active_sheet.getRange(diff_row,active_column).set.setBackgroundRGB(255,0,0);
          }
        }
     }

}

【问题讨论】:

    标签: google-apps-script google-sheets setvalue setbackground


    【解决方案1】:

    active_sheet 未在您的代码中定义,Range.setBackgroundRGB()Range.setValue() 在您的任一组合中都按预期工作。

    更新代码:

    function onEdit(e) {
      var active_sheet = e.source.getActiveSheet();
      var active_cell = e.range;
      var active_column = active_cell.getColumn();
    
          if(active_sheet.getName().startsWith("202")){
            var in_row= 5;
            var exp_row= 6;
            var diff_row = 7;
        
            var income = active_sheet.getRange(in_row,active_column).getValue();
            var expenses = active_sheet.getRange(exp_row,active_column).getValue();
            var diff = income - expenses;
        
            if (active_column >= 2){
              if(income > expenses) {
                active_sheet.getRange(diff_row,active_column).setBackgroundRGB(255,0,0).setValue(diff);
              } else if (income == expenses) {
                active_sheet.getRange(diff_row,active_column).setValue(diff).setBackgroundRGB(0,255,0);
              } else {
                active_sheet.getRange(diff_row,active_column).setValue(diff);
                active_sheet.getRange(diff_row,active_column).setBackgroundRGB(255,0,0);
              }
            }
         }
    
    }
    

    输出:


    关于您的其他问题:有没有办法在不使用活动单元格的情况下在特定列中工作?

    • 是的,您可以选择特定列作为您的范围,而无需使用活动单元格的列索引。在使用Sheet.getRange(row, column) 选择范围时,您只需要提供一个硬编码的列索引。

    示例:

    var income = active_sheet.getRange(in_row,4).getValue();
    
    • 在这里,我将访问 D 列中的单元格(位于索引 4 中)。

    【讨论】:

    • 谢谢!奇怪的事情发生了。我必须在我工作的单元格中“清除格式”才能看到颜色!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2023-01-21
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多