Javascript 谷歌表单上的股票市场
我正试图在谷歌表单上制作一个股票市场模型。链接: A-D列是我为买入价、卖出价、买入数量、卖出数量输入的随机数。F-I列是按排序顺序排列的这些变量。单元格E13是更新后的价格。我希望单元格E14是更新的销售数量。请帮忙 以下是我使用的代码: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
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
。我更新了我的答案,以显示如何将更新后的购买数量保存为新变量并避免覆盖。很高兴帮助你!出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助——它还可以帮助将来遇到同样问题的其他人找到解决方案:)