从一个工作表复制数据,将当前日期添加到每个新行,然后粘贴

时间:2018-04-09 10:31:12

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

我已经完成了一些阅读,但我对脚本的有限知识使得事情变得困难。我想:

  1. 从一个标题为“下载”
  2. 的工作表中复制可变数量的行数据范围(已知列)
  3. 将该数据粘贴到名为“贸易历史记录”的新工作表中,列于B列
  4. 在新工作表中,将每日格式化的日期(DD / MM / YYYY)添加到每个复制记录的新列A中
  5. The data in worksheet 'Download' uses IMPORTHTML

    The data copied from Download to store a historical record needs a date in Column A

    我设法让1和2工作,但无法解决第3次问题。请参阅下面的当前脚本。

    function recordHistory() {
    var ss = SpreadsheetApp.getActive(),
    sheet = ss.getSheetByName('Trade_History');
    var source = sheet.getRange("a2:E2000");
      ss.getSheetByName('Download').getRange('A2:E5000').copyTo(sheet.getRange(sheet.getLastRow()+1, 2))
      }
    

1 个答案:

答案 0 :(得分:1)

您需要使用Utilities.formatDate()将今天的日期格式化为DD / MM / YYYY。

因为你正在复制一组值,然后在它旁边(在A列中),粘贴另一组,我也改变了你的代码。

function recordHistory() {
  var ss = SpreadsheetApp.getActive(),
      destinationSheet = ss.getSheetByName('Trade_History');
  var sourceData = ss.getSheetByName('Download').getDataRange().getValues();
  for (var i=0; i<sourceData.length; i++) {
    var row = sourceData[i];
    var today = Utilities.formatDate(new Date(), 'GMT+10', 'dd/MM/yyyy'); // AEST is GMT+10
    row.unshift(today); // Places data at the beginning of the row array
  }
  destinationSheet.getRange(destinationSheet.getLastRow()+1, // Append to existing data
                            1, // Start at Column A
                            sourceData.length, // Number of new rows to be added (determined from source data)
                            sourceData[0].length // Number of new columns to be added (determined from source data)
                           ).setValues(sourceData); // Printe the values
}

从源数据的getting the values开始。这将返回一个可以循环的数组,以添加今天的日期。将日期添加到所有源数据后,确定将打印的范围边界。现在必须定义完整的维度,而不是简单地选择使用copyTo()方法完成的起始单元格。最后,将值打印到定义的范围。