【问题标题】:setBackGroundRGB not accepting stringsetBackGroundRGB 不接受字符串
【发布时间】:2013-09-01 00:08:27
【问题描述】:

setBackgroundRGB() 类如果我传递一个字面量就可以工作

setBackgroundRGB(255,255,255); 

但如果我将其传递给变量,则会失败:

_Color = "255, 255, 255";

setBackgroundRGB(_Color); 

不起作用并返回错误

`Cannot find method setBackgroundRGB(string)`

我需要在这里做一些我不知道的转换吗?

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    你需要传递一个数组。以下应该有效:

    _Color = [255, 255, 255];
    setBackgroundRGB(_Color); 
    

    注意 - 这基本上就是上面的帖子所做的—— split() 将字符串转换为数组...

    【讨论】:

      【解决方案2】:

      确实,API 没有方法 setBackgroundRGB(string),提供了方法setBackgroundRGB(Integer, Integer, Integer),但是,可以选择以字符串作为输入来实现您的需求:

      function setColorToRange() {
        var colorRGB = '0, 255, 0';
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getActiveSheet();      
        var range = sheet.getRange('A1:B3');
        range.setBackgroundRGB.apply(range, colorRGB.split(', '));
      }
      

      更新

      为了得到可以应用的向量的一些改进,稍微扩大了所提供的示例,我们整合了 cmets 中指出的一些改进,结果如下:

      function setColorToRange() {
        var colorRGB = '0, 255, 0';
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sheet = ss.getActiveSheet();      
        var range = sheet.getRange('A1:B3');
        var arrColorRGB = getRGB(RGBString);
        range.setBackgroundRGB.apply(range, arrColorRGB);
      }
      
      function getRGB(RGBString) {
        // Returns a vector of integers
        return RGBString.replace(/ /g, '').split(',').map(returnInt);
      }
      
      function returnInt(value) {
        return parseInt(value, 10);
      }
      

      【讨论】:

        【解决方案3】:

        您正在传递一个字符串。它需要整数。

        试试这个:

        _Color = 255,255,255
        

        我怀疑这会起作用。您可能需要为每个变量做多个变量

        red = 255;
        green = 255;
        blue = 255;
        

        【讨论】:

          【解决方案4】:

          使用 rangeRGBstring 作为参数的相同方法的另一种变体:

          function test(){ // to define 2 parameters
            var range = SpreadsheetApp.getActiveSheet().getRange('A1:B3');
            setColorToRange(range,'0, 255, 0');
          }
          
          function setColorToRange(range,RGBString) {
            var colorRGB = RGBString.replace(/ /g,'').split(',');// first remove spaces if present then split on comma only to get the array of integers
            range.setBackgroundRGB.apply(range, colorRGB);
          }
          

          【讨论】:

            【解决方案5】:

            常量 rgb = { 红色:224, 绿色:224, 蓝色:224 }

            ....setBackgroundRGB(rgb.red, rgb.green, rgb.blue);

            【讨论】:

            • “好答案”还包括一两句话,以纯文本形式解释您认为您的解决方案可行的原因。请访问 SO 帮助中心,特别是本指南以获取更多详细信息 >>> stackoverflow.com/help/how-to-answer
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-08-05
            • 1970-01-01
            • 2015-07-02
            • 1970-01-01
            • 2021-06-26
            • 1970-01-01
            • 2016-07-14
            相关资源
            最近更新 更多