仅过滤当前日期和将来日期的数据

时间:2019-09-13 11:41:22

标签: google-apps-script google-sheets

我正在从.CSV文件导入数据

function myFunction() {
  var url = "https://projects.fivethirtyeight.com/soccer-api/club/spi_matches.csv";
  var data = UrlFetchApp.fetch(url).getContentText();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var resource = {requests: [{pasteData: {
    data: data,
    coordinate: {sheetId: sheet.getSheetId()},
    delimiter: ","
  }}]};
  Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}

过去的数据对我不感兴趣,我想进行过滤以使工作表更小,也使我的工作更加轻松,通过脚本,我无法直接从数据源中进行过滤,并且当我尝试按以下方式进行过滤时:另一页中的公式,则过滤器不起作用。

=FILTER('Page1'!A2:A,'Page1'!A2:A>=TEXT(now(),"dd/mm/yyyy"))

我想知道我必须要过滤哪些数据,因为我会每天对其进行更新,因此该过滤器对于我要进行的研究非常重要。

如果在导入时已经有任何方法可以进行过滤,那就更好了,但是如果我需要在另一个电子表格页面上使用函数,也没有问题。

1 个答案:

答案 0 :(得分:1)

  • 您要检索CSV数据并将其放入电子表格中。
  • 放置CSV数据后,您要删除今天之前的数据。
    • 日期值为“ A”列。
  • 您想使用Google Apps脚本实现这一目标。

如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。

在此修改中,使用以下流程。

  1. 使用UrlFetchApp.fetch()检索CSV数据。
  2. 使用Utilities.parseCsv()解析CSV数据。
  3. 使用filter()从解析的数据中删除今天之前的值。
  4. 使用setValues()将值放入电子表格。

修改后的脚本:

function myFunction() {
  var url = "https://projects.fivethirtyeight.com/soccer-api/club/spi_matches.csv";
  var data = UrlFetchApp.fetch(url).getContentText();
  var csv = Utilities.parseCsv(data);
  var d = new Date();
  d.setHours(0, 0, 0, 0);
  var today = d.getTime();
  var values = csv.filter(function(e, i) {
    var temp = new Date(e[0]);
    temp.setHours(0, 0, 0, 0);
    return i > 0 && temp.getTime() >= today;
  });
  values.unshift(csv[0]);
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}
  • 在此脚本中,值被放入活动工作表中。

参考文献:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。