【问题标题】:Evaluate/Calculate a Concatenate statement using google Script使用谷歌脚本评估/计算连接语句
【发布时间】:2020-09-03 17:22:39
【问题描述】:

我在单个单元格中输入了格式为“12mm*300*300”的用户输入。我需要使用一些公式或脚本来计算相同的值,但我无法获得所需的结果。我直接在 Google 表格中使用的公式是

=concatenate("=Round(",substitute(E1,"mm",""),"*7.85,1)")

但同样的结果是

=Round(12*300*300*7.85,1)

但没有计算相同。其次,我使用谷歌脚本函数 setformula 尝试了同样的方法,但这也导致了错误。

var formul =["=,concatenate(\"Round(\",substitute($B"+row+",\"mm\",\"\"),\"\*7.85/1000000,1)\"))"];
spreadsheet.getRange(range4).setFormula(formul);

【问题讨论】:

    标签: google-apps-script google-sheets eval google-sheets-formula string-concatenation


    【解决方案1】:

    查询可以对字符串进行简单的数学运算,例如加法、减法、乘法和除法。试试

    =ROUND(QUERY(,"SELECT "&CONCATENATE(SUBSTITUTE(E1,"mm",""),"*7.85")&" LABEL "&CONCATENATE(SUBSTITUTE(E1,"mm",""),"*7.85")&" ''",0))
    

    【讨论】:

      【解决方案2】:

      Google 表格无法评估包含 Google 表格内置函数的“公式”(文本值)。

      一种选择是使用 Google Apps 脚本通过 setFormula/setFormulas1 将文本编写为公式。

      关于

      var formul =["=,concatenate(\"Round(\",substitute($B"+row+",\"mm\",\"\"),\"\*7.85/1000000,1)\"))"];
      spreadsheet.getRange(range4).setFormula(formul); 
      

      它不起作用,因为 setFormula 需要一个字符串,但您的 formul 声明正在分配一个数组,并且该数组的成员没有使用正确的公式语法构建。

      1. =后面有个逗号(去掉)

      2. 还有多余的逗号和"

      3. 不要使用内置函数SUBSTITUTE,而是使用像String.prototype.replace这样的JavaScript方法:

      var E1 = "2mm*300*300";
      var formula = "=Round("+E1.replace('mm','')+"*7.85/1000000,1))"
      console.info(formula)

      注意事项:

      1. 也可以使用 setValue/setValues,但您将依赖 Google Sheet 数据类型自动检测,有时这不能正常工作)

      相关

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        相关资源
        最近更新 更多