Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Methods 如何在setFormula()方法内的函数引用中创建相对单元格引用?_Methods_Google Apps Script_Google Sheets_Reference_Array Formulas - Fatal编程技术网

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

Methods 如何在setFormula()方法内的函数引用中创建相对单元格引用?,methods,google-apps-script,google-sheets,reference,array-formulas,Methods,Google Apps Script,Google Sheets,Reference,Array Formulas,下面的代码是脚本的一部分。它只是将C范围内的一个值与D范围内的一个值相乘,然后用函数calculatePrice计算价格。该函数接受一个参数(在B范围内找到的标签),在该参数上,is通过对象循环查找匹配的价格。所有这些都是可行的,但是单元格B2应该是下一行中的B3,B4应该是下一行中的B4,等等。在这个公式中,我如何让它起作用?我试过B2:B,但不起作用。非常感谢你的帮助 sheet.getRange(2,5).setFormula('=ArrayFormula(if(not(isblank($

下面的代码是脚本的一部分。它只是将C范围内的一个值与D范围内的一个值相乘,然后用函数calculatePrice计算价格。该函数接受一个参数(在B范围内找到的标签),在该参数上,is通过对象循环查找匹配的价格。所有这些都是可行的,但是单元格B2应该是下一行中的B3,B4应该是下一行中的B4,等等。在这个公式中,我如何让它起作用?我试过B2:B,但不起作用。非常感谢你的帮助

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

请尝试以下代码:

sheet.getRange(2,5).setFormula('=ArrayFormula(if(not(isblank(C2:C)),C2:C*D2:D*calculatePriceArray(B2:B)," "))');
您可能注意到,您的函数“calculatePrice”由“calculatePriceArray”包装:

因为我们想返回一个数组。
实际上,我们在这里使用了索引。

我尝试使用index(),省略了类似so index的行(B2:B,1)。这在常规电子表格中有效,但在我的公式中似乎失败了。有人知道为什么会这样吗?非常感谢!它起作用了。我在这方面是新手,这对我获得更好的洞察力和推进我的学习过程有很大帮助。在我寻找答案的过程中,我看到了已知的解决方案,但显然没有认识到它也是一个适用于我的解决方案。我还没有完全理解它,但现在我知道它是有效的,我将进一步研究它。再次感谢。
function calculatePriceArray(input) {
  return Array.isArray(input) ? 
    input.map( function(e) {
      return e.map( function(f){
        return calculatePrice(f);
      })
    }) : 
  calculatePrice(input);
}