尝试在表格中创建每日投资组合快照

问题描述 投票:0回答:1

enter image description here

我将这段代码放在一起尝试每天创建我的投资组合的快照,但显然不起作用。

日期需要是当前日期,而不是当前打印的日期,并且需要位于所有 3 个日期列中,不知道为什么我会在单元格中收到错误消息。

function snapshot() {
  
  // Assign 'today' today's date.
  var today = Utilities.formatDate(new Date(), "GMT+1", "dd/mm/yyyy");
  
  // Assign 'dashboard' the Dashboard sheet.
  var dashboard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Test');
  
  // Assign 'new_row' the first available row to write in.
  var new_row = dashboard.getLastRow() + 1;
  
  // Assign to variables the cells where we have the info we want to snapshot.
  var cell_individualP = "B2"
  var cell_indexP = "C2"
  var cell_cashP = "D2"
  var cell_individualA = "G2"
  var cell_indexA = "H2"
  var cell_cashA = "I2"
  var cell_Portfolio = "L2"
  
  // Assign to variables the column where we want to copy every value.
  var c_date = 1; 
  var c_individualP = 2;
  var c_indexP = 3;
  var c_cashP = 4;
  var c_date = 6; 
  var c_individualA = 7;
  var c_indexA = 8;
  var c_cashA = 9;
  var c_Portfolio = 12;
  
  // Write every piece of information in the column it belongs in the 'new_row'
  dashboard.getRange(new_row, c_date).setValue(today);
  dashboard.getRange(new_row, c_individualP).setValue(dashboard.getRange(cell_individualP).getValue());
  dashboard.getRange(new_row, c_indexP).setValue(dashboard.getRange(cell_indexP).getValue());
  dashboard.getRange(new_row, c_cashP).setValue(dashboard.getRange(cell_cashP).getValue());
  dashboard.getRange(new_row, c_date).setValue(today);
  dashboard.getRange(new_row, c_individualA).setValue(dashboard.getRange(cell_individualA).getValue());
  dashboard.getRange(new_row, c_indexA).setValue(dashboard.getRange(cell_indexA).getValue());
  dashboard.getRange(new_row, c_cashA).setValue(dashboard.getRange(cell_cashA).getValue());
  dashboard.getRange(new_row, c_date).setValue(today);
  dashboard.getRange(new_row, c_Portfolio).setValue(dashboard.getRange(cell_Portfolio).getValue());
}

每次我运行代码来测试它时,似乎都会在日期上添加 1 个月,而不仅仅是打印当前日期,无法弄清楚那是什么,并且还需要它打印到所有三个日期列而不仅仅是中间一个

google-sheets
1个回答
0
投票

忽略这一点,我发现我应该在工作表中执行此操作,例如,将日期的顶栏设为 =today(),然后调整代码以从所有列中获取信息。

  
  // Assign 'today' today's date.
  var today = Utilities.formatDate(new Date(), "GMT+1", "dd/mm/yyyy");
  
  // Assign 'dashboard' the Dashboard sheet.
  var dashboard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Test');
  
  // Assign 'new_row' the first available row to write in.
  var new_row = dashboard.getLastRow() + 1;
  
  // Assign to variables the cells where we have the info we want to snapshot.
  var cell_DateP = "A2"
  var cell_IndividualP = "B2"
  var cell_IndexP = "C2"
  var cell_CashP = "D2"
  var cell_DateA = "F2"
  var cell_IndividualA = "G2"
  var cell_IndexA = "H2"
  var cell_CashA = "I2"
  var cell_DateV = "K2"
  var cell_Portfolio = "L2"
  
  // Assign to variables the column where we want to copy every value.
  var c_DateP = 1; 
  var c_IndividualP = 2;
  var c_IndexP = 3;
  var c_CashP = 4;
  var c_DateA = 6; 
  var c_IndividualA = 7;
  var c_IndexA = 8;
  var c_CashA = 9;
  var c_DateV = 11;
  var c_Portfolio = 12;
  
  // Write every piece of information in the column it belongs in the 'new_row'
  dashboard.getRange(new_row, c_DateP).setValue(dashboard.getRange(cell_DateP).getValue());
  dashboard.getRange(new_row, c_IndividualP).setValue(dashboard.getRange(cell_IndividualP).getValue());
  dashboard.getRange(new_row, c_IndexP).setValue(dashboard.getRange(cell_IndexP).getValue());
  dashboard.getRange(new_row, c_CashP).setValue(dashboard.getRange(cell_CashP).getValue());
  dashboard.getRange(new_row, c_DateA).setValue(dashboard.getRange(cell_DateA).getValue());
  dashboard.getRange(new_row, c_IndividualA).setValue(dashboard.getRange(cell_IndividualA).getValue());
  dashboard.getRange(new_row, c_IndexA).setValue(dashboard.getRange(cell_IndexA).getValue());
  dashboard.getRange(new_row, c_CashA).setValue(dashboard.getRange(cell_CashA).getValue());
  dashboard.getRange(new_row, c_DateV).setValue(dashboard.getRange(cell_DateV).getValue());
  dashboard.getRange(new_row, c_Portfolio).setValue(dashboard.getRange(cell_Portfolio).getValue());
}```
© www.soinside.com 2019 - 2024. All rights reserved.