首页 > 解决方案 > 仅从当前和未来日期导入数据

问题描述

我正在尝试导入 Fivethirtyight 数据,但是在尝试从 CSV 文件导入完整链接时,它超出了 google 允许的限制。

所以......我想知道如何过滤以便只导入今天的游戏和未来的日期。从过去的比赛来看,对我来说没有任何价值。

=IMPORTDATA("https://projects.fivethirtyeight.com/soccer-api/club/spi_matches.csv")

IMPORTDATA 不起作用,因为它超出了电子表格的限制,因为它保存了自 2016 年以来的过去游戏数据,因此数据列表变得太大。

我只需要当前日期和未来日期游戏

标签: google-apps-scriptgoogle-sheets

解决方案


这个答案怎么样?

CSV 数据的大小似乎是 4,183,375 字节,32,101 行和 22 列。那么如何使用 Google Apps 脚本放置数据呢?不幸的是,这个 CSV 不能使用自定义函数放置,因为它很大。

将 CSV 数据导入 Spreadsheet 的基准来看,当使用 Sheets API 时,可以通过使用Utilities.parseCsv()和的方法降低流程成本setValues()。所以在这个答案中,Sheets API 用于将 CSV 值放入电子表格。请认为这只是几个答案之一。

示例脚本 1:

在使用以下脚本之前,请在 Advanced Google services 中启用 Sheets API

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());
}
  • 在此脚本中,CSV 数据来自活动工作表的单元格“A1”。

示例脚本 2:

如果您无法使用 Sheets API,您也可以使用以下脚本。

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 sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, csv.length, csv[0].length).setValues(csv);
}

参考:

如果这不是你想要的方向,我很抱歉。


推荐阅读