【发布时间】:2021-10-23 12:27:38
【问题描述】:
我是 google app 脚本的初学者,想问一个问题,关于如何根据从我的电子表格中提取的信息数组为对象创建子类。
这是一个示例sheet,其中包含“历史”工作表中的一些数据。输入数据是用户投资的交易历史。我的最终目标是在 google app 脚本中创建一个数组,其中包含任何给定股票的调整后的股票分割值。
但是,我的项目的第一步是以我可以执行这些计算的方式收集数据。为此,我需要创建一个像这样的对象:
stock symbol: {date:value, {quantity: value, price:value}}, {date:value, {split ratio:value}}
这是因为在此对象中,日期与数量价格和拆分比率相关联。在以后的计算中,我会查看拆分值的日期是否小于或等于数量/价格值的日期,如果是这样,则执行拆分比率 * 数量和价格/拆分比率。如果这不是真的,那么对于任何给定的库存,保持价格和数量不变。最后以与原始数组相同的形式返回这些对象。
这是我到目前为止所做的尝试:
function createDate(date, quantity, price) {
this.date = date;
this.quantityPrice = new createDateData (quantity, price);
}
function createDateData(quantity, price) {
this.quantity = quantity;
this.price = price;
}
function retrieveData () {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const inputSheet = ss.getSheetByName('History');
const data = inputSheet.getRange(2, 1, inputSheet.getLastRow() - 1, 9).getValues();
const filterd = data.filter(row => row[2] == 'Buy' || row[2] == 'Sell' || row [2] == 'Split');
const sorted = filterd.sort((a, b) => {
if (a[0] < b[0]) return -1
if (a[0] > b[0]) return 1
else return 0
})
for ( let i of sorted) {
var sampleData= new createDate([i][0][0],[i][0][3],[i][0][4]);
console.log(sampleData);
}
}
这是我得到的输出
{ date: Tue Jun 30 2020 18:00:00 GMT-0400 (Eastern Daylight Time),
quantityPrice: { quantity: 1, price: 40000 } }
与期望的输出有什么不同?
问题:如何获得所需的输出?以 AMZN 为例:
AMZN: {9/28/2020, {1, 100}}, {9/28/2020, {0.5, 200}}, {10/19/2020 {0.2, 100}}, {11/27/2020, {10}}
EDIT2:有关所需输出,请参阅工作表“所需输出”。
【问题讨论】:
-
我必须为我糟糕的英语水平道歉。关于
Question: How do I get the desired output?,什么是stock symbol: {date:value, {quantity: value, price:value}}, {date:value, {split ratio:value}}?那是字符串值?我可以问你目标的细节吗? -
感谢您的回复,我编辑了问题以显示所需的输出。见编辑。
-
感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,来自
Question: How do I get the desired output? For example, in the case of AMZN:,我无法理解您的目标。因为我认为AMZN: {9/28/2020, {1, 100}}, {9/28/2020, {0.5, 200}}, {10/19/2020 {0.2, 100}}, {11/27/2020, {10}}不是JSON 对象。您想将其作为文本值检索吗?我为我的理解不佳道歉。 -
抱歉,如果这不是一个对象。如果数量和价格的日期等于或小于拆分比率的日期,我希望将数量*拆分比率和价格/拆分比率相乘。那我该怎么做呢?
-
@YuriKhristich 所以我按照你的建议添加了一张“期望的输出”表。您可以看到 AMZN 的数量乘以 10,每股价格除以 10。这是针对拆分前的所有交易进行的,而不是拆分后的交易。数字 10 来自单元格 I28 中的分流比。这个想法是制作一个动态脚本,这次是 AMZN,但下一次可能是不同的股票。我希望我现在解释得足够好。
标签: arrays object google-apps-script google-sheets