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