Google apps script 在Google电子表格中使用If语句

Google apps script 在Google电子表格中使用If语句,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在谷歌电子表格中创建一个函数的同时,试图找出如何使用If语句 我已经提供了一个我正在努力实现的例子。据我所知,这段代码中的If语句只是检查单元格A4的值是否等于4,如果是,则将输入数字乘以1.5?但是,当我尝试运行该函数时,它总是返回0(或我从price变量开始指定的任何值) 任何帮助都将不胜感激 非常感谢 function calculatePrice(inNum) { var sheet = SpreadsheetApp.getActiveSpreadsheet

我在谷歌电子表格中创建一个函数的同时,试图找出如何使用If语句

我已经提供了一个我正在努力实现的例子。据我所知,这段代码中的If语句只是检查单元格A4的值是否等于4,如果是,则将输入数字乘以1.5?但是,当我尝试运行该函数时,它总是返回0(或我从price变量开始指定的任何值)

任何帮助都将不胜感激

非常感谢

    function calculatePrice(inNum) {

         var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
         var price = 0;

         if (sheet.getRange(1, 4).getValue() == 4) {
             price = inNum * 1.5;
         }

         return price;
     }
给你。 您缺少getDataRange,之后可以获取单元格

function calculatePrice(inNum) {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var price = 0;
 if (sheet.getDataRange().getCell(row, col).getValue() == 4) {
  price = inNum * 1.5;
 }
 return price;
}

正如T.J.Crowder所发现的,公认的答案有一个严重的弱点。自定义函数依赖于
A4
中的值,但当该值更改时,它不会自动更新

为什么??作为优化步骤,图纸将仅刷新其确定受编辑影响的单元格。但是,它不分析自定义函数的内部,而是依赖于电子表格公式中的范围引用参数

如果函数响应
A4
中的更改很重要,那么最好实现它,将
重要因素作为参数,从而:

function calculatePrice(importantFactor,inNum) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var price = 0;
  if (importantFactor == 4) {
    price = inNum * 1.5;
  }
  return price;
}
要这样使用,假设
inNum
G6
中的值:

=calculatePrice($A$4,G6)
更好的是,您可以在不使用脚本的情况下实现这一点:

=IF($A$4=4, G6 * 1.5, 0)

无论哪种方式,更改
A4
的内容都会触发包含公式的单元格的重新计算。

您如何运行该函数?您认为为什么需要
getDataRange
?看起来很好。使用getDataRange,我得到了所有单元格的范围。我包括了一个演示来展示它是如何工作的我用这段代码得到了与OP代码完全相同的结果,也就是说:一开始它似乎可以工作,但函数结果是缓存的,因为随后它不会更新——如果我更改A1,也不会使用函数删除单元格并再次键入它。我觉得很奇怪,OP将其标记为“已接受”,但希望它对他们有效。@T.J Crowder问题是该函数将更新我在参数中发送的值的输入。他想使用谷歌应用程序脚本的公式。最好是只做=如果(A1=4,C3*1.5,0)