Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌表单上的股票市场_Javascript_Google Sheets_Google Sheets Api_Google Sheets Query_Google Sheets Macros - Fatal编程技术网

Javascript 谷歌表单上的股票市场

Javascript 谷歌表单上的股票市场,javascript,google-sheets,google-sheets-api,google-sheets-query,google-sheets-macros,Javascript,Google Sheets,Google Sheets Api,Google Sheets Query,Google Sheets Macros,我正试图在谷歌表单上制作一个股票市场模型。链接: A-D列是我为买入价、卖出价、买入数量、卖出数量输入的随机数。F-I列是按排序顺序排列的这些变量。单元格E13是更新后的价格。我希望单元格E14是更新的销售数量。请帮忙 以下是我使用的代码: function myFunction() { var ss=SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var Buyprice=sheet

我正试图在谷歌表单上制作一个股票市场模型。链接: A-D列是我为买入价、卖出价、买入数量、卖出数量输入的随机数。F-I列是按排序顺序排列的这些变量。单元格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的方法签名不匹配。

您需要将
setValues()
更改为
setValues()
正如您在中看到的:

getValues()

返回此范围值的矩形网格

设置值(值)

设置值的矩形网格

现在,如果在代码中实现日志,例如

...
 Logger.log(Sellquantity);
 var Sellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
 Logger.log(Sellquantity);
...
输出将是:

[[6.0]]
6.0
换句话说,矩形网格将通过另一个值的子弧变换为整数值

现在,
sheet.getRange(“E14”).setValues(Sellquantity)需要一个2D数组而不是一个会导致错误的数字

因此,请改用:

setValue()

设置范围的值。该值可以是数字、字符串或布尔值 或日期

事实上,如果比较类型为[[]]的数组元素,比较
if(Buyprice>Sellprice)
可能也无法按预期工作,因此如果同时使用
getValue()
而不是
getValues()
,则效果更好

样本:

function myFunction() {
  
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  var Buyprice=sheet.getRange("F2").getValue(); 
  var Sellprice=sheet.getRange("H2").getValue();
  var Buyquantity=sheet.getRange("G2").getValue();
  var Sellquantity=sheet.getRange("I2").getValue();
  if(Buyprice>Sellprice){
    sheet.getRange("E13").setValue(Sellprice);
    var newBuyquantity=Buyquantity- Math.min(Buyquantity,Sellquantity);
    var newSellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
    sheet.getRange("E14").setValue(newSellquantity);
  }
  else{ } 
}
您需要将
setValues()
更改为
setValue()
正如您在中看到的:

getValues()

返回此范围值的矩形网格

设置值(值)

设置值的矩形网格

现在,如果在代码中实现日志,例如

...
 Logger.log(Sellquantity);
 var Sellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
 Logger.log(Sellquantity);
...
输出将是:

[[6.0]]
6.0
换句话说,矩形网格将通过另一个值的子弧变换为整数值

现在,
sheet.getRange(“E14”).setValues(Sellquantity)需要一个2D数组而不是一个会导致错误的数字

因此,请改用:

setValue()

设置范围的值。该值可以是数字、字符串或布尔值 或日期

事实上,如果比较类型为[[]]的数组元素,比较
if(Buyprice>Sellprice)
可能也无法按预期工作,因此如果同时使用
getValue()
而不是
getValues()
,则效果更好

样本:

function myFunction() {
  
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  var Buyprice=sheet.getRange("F2").getValue(); 
  var Sellprice=sheet.getRange("H2").getValue();
  var Buyquantity=sheet.getRange("G2").getValue();
  var Sellquantity=sheet.getRange("I2").getValue();
  if(Buyprice>Sellprice){
    sheet.getRange("E13").setValue(Sellprice);
    var newBuyquantity=Buyquantity- Math.min(Buyquantity,Sellquantity);
    var newSellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
    sheet.getRange("E14").setValue(newSellquantity);
  }
  else{ } 
}

感谢您的宝贵反馈。我能够执行代码。尽管如此,现在的销售量是6。从技术上讲,应该是2。你能指出代码有什么问题吗。我会非常感激的!我假设问题是您无意中覆盖了
Buyquantity
。我更新了我的答案,以显示如何将更新后的购买数量保存为新变量并避免覆盖。很高兴帮助你!出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助——它也帮助其他将来有同样问题的人找到解决办法:)谢谢你宝贵的反馈。我能够执行代码。尽管如此,现在的销售量是6。从技术上讲,应该是2。你能指出代码有什么问题吗。我会非常感激的!我假设问题是您无意中覆盖了
Buyquantity
。我更新了我的答案,以显示如何将更新后的购买数量保存为新变量并避免覆盖。很高兴帮助你!出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助——它还可以帮助将来遇到同样问题的其他人找到解决方案:)