Google Sheets上的股票市场

时间:2020-06-24 15:35:06

标签: javascript google-sheets google-sheets-api google-sheets-query google-sheets-macros

我正在尝试在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的方法签名不匹配。

1 个答案:

答案 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()