Gscripts 获取大型 CSV
Gscripts fetch large CSV
这可能很容易,但我一直在努力。我正在获取 CSV 并将其写入 google sheet。 CSV 每天更新一次,最近太大了,我无法继续使用 ImportData。以下来自 Max Mahkrov 的代码几乎可以工作,但数据仍然太大,我无法在 sheet 中编写。如何编写列的选择(例如 1-8)?
对我来说更好的方法是根据日期过滤行,但我看到有一个 ArrayLib 库曾经具有该功能,现在已经不存在了。
javascript:
function getBigCsv() {
var url = 'https:URL.csv';
var csv = UrlFetchApp.fetch(url);
var data = Utilities.parseCsv(csv);
SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1, data.length, data[0].length).setValues(data);
}
Utilities.parseCsv
returns 你是一个可以过滤的二维数组,例如map()
样本:
function getBigCsv() {
var url = 'https:URL.csv';
var csv = UrlFetchApp.fetch(url);
var data = Utilities.parseCsv(csv);
data = data.map(function(row){return [row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]]});
SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1, data.length, data[0].length).setValues(data);
}
将数据限制为大于 dtv 的 Date().valueOf()。我可能会使用自定义对话框 select 您希望显示多少天。但我不想写那个,所以我会留给你。
function getSmallerCsv() {
const dt = new Date();
const dtv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
var url = 'https:URL.csv';
var csv = UrlFetchApp.fetch(url);
var data = Utilities.parseCsv(csv);
data = data.map(function(row){return [row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]]}).filter(r => new Date(r[?]).valueOf() > dtv);
SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1, data.length, data[0].length).setValues(data);
}
这可能很容易,但我一直在努力。我正在获取 CSV 并将其写入 google sheet。 CSV 每天更新一次,最近太大了,我无法继续使用 ImportData。以下来自 Max Mahkrov 的代码几乎可以工作,但数据仍然太大,我无法在 sheet 中编写。如何编写列的选择(例如 1-8)?
对我来说更好的方法是根据日期过滤行,但我看到有一个 ArrayLib 库曾经具有该功能,现在已经不存在了。
javascript:
function getBigCsv() {
var url = 'https:URL.csv';
var csv = UrlFetchApp.fetch(url);
var data = Utilities.parseCsv(csv);
SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1, data.length, data[0].length).setValues(data);
}
Utilities.parseCsv
returns 你是一个可以过滤的二维数组,例如map()
样本:
function getBigCsv() {
var url = 'https:URL.csv';
var csv = UrlFetchApp.fetch(url);
var data = Utilities.parseCsv(csv);
data = data.map(function(row){return [row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]]});
SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1, data.length, data[0].length).setValues(data);
}
将数据限制为大于 dtv 的 Date().valueOf()。我可能会使用自定义对话框 select 您希望显示多少天。但我不想写那个,所以我会留给你。
function getSmallerCsv() {
const dt = new Date();
const dtv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
var url = 'https:URL.csv';
var csv = UrlFetchApp.fetch(url);
var data = Utilities.parseCsv(csv);
data = data.map(function(row){return [row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]]}).filter(r => new Date(r[?]).valueOf() > dtv);
SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange(2, 1, data.length, data[0].length).setValues(data);
}