我正在尝试在Google表格上建立一个模型股票市场。链接:https://docs.google.com/spreadsheets/d/1OmOWKfxYAdNRPcF4yfX4jJ0DX3UvUutaHJINHRU8vqo/edit?usp=sharing A-D列是我为购买价格,出售价格,购买数量,出售数量输入的随机数。 F-1列是按排序顺序排列的这些变量。单元格E13是更新的价格。我希望单元格E14是更新的销售数量。请帮忙!
以下是我使用的代码:
function myFunction() {
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var Buyprice=sheet.getRange("F2").getValues();
var Sellprice=sheet.getRange("H2").getValues();
var Buyquantity=sheet.getRange("G2").getValues();
var Sellquantity=sheet.getRange("I2").getValues();
if(Buyprice>Sellprice){
sheet.getRange("E13").setValues(Sellprice);
var Buyquantity=Buyquantity- Math.min(Buyquantity,Sellquantity);
var Sellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
sheet.getRange("E14").setValues(Sellquantity);}
else{ }
}
运行此脚本后,我得到:参数(数字)与SpreadsheetApp.Range.setValues的方法签名不匹配。
答案 0 :(得分:0)
setValues()
更改为setValue()
您可以在documentation中阅读
getValues()
返回此范围内值的矩形网格
和
setValues(values)
设置值的矩形网格
现在,如果您在代码中实现日志,例如
...
Logger.log(Sellquantity);
var Sellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
Logger.log(Sellquantity);
...
输出将是:
[[6.0]]
6.0
换句话说,矩形网格将由另一个值的子转换为整数值。
现在,sheet.getRange("E14").setValues(Sellquantity);
需要2D数组而不是数字,这将导致错误。
因此,请改用setValue():
setValue()
设置范围的值。该值可以是数字,字符串,布尔值 或日期。
实际上,如果比较类型[[]]的数组元素,则比较if(Buyprice>Sellprice)
也可能无法按预期方式工作,因此最好同时使用getValue()
而不是{{1} }。
示例:
getValues()