看起来该网站提供了一个直接 URL,然后是日期。
https://www.opendata.nhs.scot/dataset/b318bddf-a4dc-4262-971f-0ba329e09b87/resource/7fad90e5-6f19-455b-bc07-694a22f8d5dc/download/total_cases_by_hb_20210401.csv
因此,为新日期构造该 URL,然后在一天中的某个时间使用触发器触发该函数并将数据下拉到您选择的工作表中,应该相当简单:
function importCSVFromWeb() {
// Provide the full URL of the CSV file.
var csvUrl = "https://www.opendata.nhs.scot/dataset/b318bddf-a4dc-4262-971f-0ba329e09b87/resource/7fad90e5-6f19-455b-bc07-694a22f8d5dc/download/total_cases_by_hb_20210401.csv";
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent);
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
您可以更改上述内容以写入特定工作表而不是活动工作表,您可以将工作表名称存储在“设置”选项卡中的单元格中并作为参数传递
var ss = SpreadsheetApp.getActiveSpreadsheet();
function importCSVFromWeb() {
// Provide the full URL of the CSV file.
var csvUrl = "https://www.opendata.nhs.scot/dataset/b318bddf-a4dc-4262-971f-0ba329e09b87/resource/7fad90e5-6f19-455b-bc07-694a22f8d5dc/download/total_cases_by_hb_20210401.csv";
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent);
writeDataToSheet(csvData, "SheetName");
}
// Writes a 2D array of data to sheet
function writeDataToSheet(data, sheetName) {
goToSheet(sheetName);
var sheet = ss.getActiveSheet();
// Leave header row, assume no more than 26 columns and use "Z" for last column
var range = sheet.getRange("A1:Z");
range.clear();
// write date to active sheet starting at the 1st row
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
return sheet.getName();
}
function goToSheet(sheetName) {
ss.setActiveSheet(ss.getSheetByName(sheetName));
}
在我的自动电子表格中,我总是有一个名为“设置”的选项卡,而不是使用 a1Notation 引用单元格,我更喜欢使用名称范围。
这是一个如何从已命名的单元格中检索值的示例,TargetSheet 是特定单元格的名称:
var sheetName = ss.getRange("TargetSheet").getValue();
然后你可以使用上面函数中的值而不是硬编码工作表。
function importCSVFromWeb() {
// Provide the full URL of the CSV file.
var csvUrl = "https://www.opendata.nhs.scot/dataset/b318bddf-a4dc-4262-971f-0ba329e09b87/resource/7fad90e5-6f19-455b-bc07-694a22f8d5dc/download/total_cases_by_hb_20210401.csv";
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
var csvData = Utilities.parseCsv(csvContent);
var sheetName = ss.getRange("TargetSheet").getValue();
writeDataToSheet(csvData, sheetName);
}