【问题标题】:Google Apps Script/Sheets - Copy cell to next empty cell in a specific column [duplicate]Google Apps 脚本/表格 - 将单元格复制到特定列中的下一个空单元格 [重复]
【发布时间】:2021-02-10 14:34:42
【问题描述】:

几天来一直在为此苦苦挣扎,无法让它按照我喜欢的方式工作。基本上我想要一个脚本,它在特定单元格中获取一个值并将其复制到另一张表中特定列的下一个可用行中(跟踪股票投资组合的每日变化)。我想将今天的日期复制到 D 列,并将另一张表中的值复制到 E 列。

我试过 getLastRow() 但它只是在列的最底部添加值。我尝试过使用其他问题的循环解决方案,但它总是会复制到错误的地方,或者我只是用我有限的编码知识不理解它。

这是我目前所拥有的,一团糟,我只是卡住了:

    function dailyCaptureGains() {
  // Get the daily value
  var stockdata = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dividend Portfolio');
  var value = stockdata.getRange(27,2).getValue();
  Logger.log("Value = " + value)
  debugger

  // Add the date and stock data to the other sheet
  var gains = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Gains');
  var formattedDate = Utilities.formatDate(new Date(), "GMT", "MM/dd/yy");
  Logger.log(formattedDate);
  debugger

  // Find next empty cells to add the data and value
  var dateRange = gains.getRange('D2:D');
  var dateLastRow = dateRange.getLastRow(); // Get last row
  Logger.log("last row = " + dateLastRow);
  var date = dateLastRow + 1;
  
  debugger
};

对所有解决方案开放。如果有更简单的方法,请告诉我。

【问题讨论】:

  • gains.getRange('D2:D').getValues().filter(String).length + 1 这将为您提供最后一行之后的行,其中包含 D 列的内容(假设 D 之间没有空单元格,就像屏幕截图中的情况一样)。
  • 对不起,在我之前评论的公式中,您应该添加 2 而不是 1,因为您从第二行开始。
  • 是的!这让我朝着正确的方向前进.. 谢谢!

标签: google-apps-script google-sheets stock


【解决方案1】:

有两种选择:

  • getLastRow(表格法)

    注意有两个getLastRow 方法,一个在Sheet 类中,一个在Range 类中。在您的情况下,您使用的是Range 类之一,其范围为D2:D,也就是说,您没有指定结束,因此您没有得到想要的结果。

    var dateLastRow = stockdata.getLastRow()
    
  • Javascript 技巧

    如果您知道范围的起点但不知道终点,则可以取那个大范围并过滤掉它的空值。

    var dateRange = gains.getRange('D2:D').getValues();
    var dateLastRow = dateRange.filter(String).length; // Get last row
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多