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

时间:2013-10-02 17:01:43

标签: google-apps-script google-sheets

我试图在Google Spreadsheets中创建函数时尝试使用If语句。

我提供了一个我想要实现的目标的例子。据我所知,此代码中的If语句只检查单元格A4的值是否等于4,如果是,那么它将输入数字乘以1.5?但是,当我尝试运行该函数时,它总是返回0(或者我开始分配价格变量的任何值)。

非常感谢任何帮助。

非常感谢

    function calculatePrice(inNum) {

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

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

         return price;
     }

2 个答案:

答案 0 :(得分:1)

你走了。 你错过了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;
}

spreadsheet

的演示

答案 1 :(得分:1)

正如T.J.Crowder所发现的,接受的答案有一个关键的弱点。自定义函数取决于A4中的值,但在更改该值时不会自动更新。

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

如果您的函数响应A4中的更改很重要,那么最好将其实现为接受importantFactor作为参数,因此:

function calculatePrice(importantFactor,inNum) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var price = 0;
  if (importantFactor == 4) {
    price = inNum * 1.5;
  }
  return price;
}

要像这样使用,假设inNumG6中的值:

=calculatePrice($A$4,G6)

更好的是,你可以在没有脚本的情况下实现这一目标:

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

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