[英]Stock market on google sheets
我正在嘗試在谷歌表格上制作 model 股票市場。 鏈接: https://docs.google.com/spreadsheets/d/1OmOWKfxYAdNRPcF4yfX4jJ0DX3UvUutaHJINHRU8vqo/edit?usp=sharing列 AD 是我為買入價格、賣出價格、買入數量、賣出數量輸入的隨機數。 列 FI 是按排序順序排列的這些變量。 單元格 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()
更改為setValue()
正如您在文檔中所讀到的:
獲取值()
返回此范圍的值的矩形網格
和
設置值(值)
設置一個矩形網格值
現在,如果您在代碼中實現日志,例如
...
Logger.log(Sellquantity);
var Sellquantity=Sellquantity- Math.min(Buyquantity,Sellquantity);
Logger.log(Sellquantity);
...
output 將是:
[[6.0]]
6.0
換句話說,矩形網格將通過另一個值的子部分轉換為 integer 值。
現在, sheet.getRange("E14").setValues(Sellquantity);
需要一個二維數組而不是一個會導致錯誤的數字。
因此,請改用setValue() :
設定值()
設置范圍的值。 該值可以是數字、字符串、boolean 或日期。
實際上,如果比較 [[]] 類型的數組元素,比較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{ }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.