如何在setFormula()方法的函数引用中创建相对单元格引用?

时间:2018-12-24 02:23:31

标签: methods google-apps-script google-sheets reference array-formulas

下面的代码是脚本的一部分。它只是将C范围内的值与D范围内的值乘以使用calculatePrice函数计算出的价格。该函数采用一个参数(在B范围中找到的标签),该参数在对象上循环查找匹配的价格。所有这些都有效,但是单元格B2应该在下一行是B3,在下一行是B4,依此类推。如何在公式中使用它?我已经尝试过B2:B,但这不起作用。非常感谢您的帮助。

sheet.getRange(2,5).setFormula('=ArrayFormula(if(not(isblank($C$2:$C)),$C$2:$C*$D$2:$D*calculatePrice(b2)," "))');

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

sheet.getRange(2,5).setFormula('=ArrayFormula(if(not(isblank(C2:C)),C2:C*D2:D*calculatePriceArray(B2:B)," "))');

您可能会注意到,您的函数“ calculatePrice”由“ calculatePriceArray”包装:

function calculatePriceArray(input) {
  return Array.isArray(input) ? 
    input.map( function(e) {
      return e.map( function(f){
        return calculatePrice(f);
      })
    }) : 
  calculatePrice(input);
}

因为我们要返回一个数组。 真的,我们在这里使用了known solution