我正在从.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"))
我想知道我必须要过滤哪些数据,因为我会每天对其进行更新,因此该过滤器对于我要进行的研究非常重要。
如果在导入时已经有任何方法可以进行过滤,那就更好了,但是如果我需要在另一个电子表格页面上使用函数,也没有问题。
答案 0 :(得分:1)
如果我的理解是正确的,那么该修改如何?请认为这只是几个答案之一。
在此修改中,使用以下流程。
UrlFetchApp.fetch()
检索CSV数据。Utilities.parseCsv()
解析CSV数据。filter()
从解析的数据中删除今天之前的值。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);
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。