[英]Import CSV data into Google Sheets
尝试对此文件使用IMPORTDATA
function 时:
https://www.kaggle.com/stefanoleone992/fifa-20-complete-player-dataset#players_20.csv
出现意外错误,提示无法将数据导入电子表格。 有没有其他方法可以将这些数据带到我的电子表格中?
这些数据对我正在做的工作非常重要。 能够输入和复制所有内容,然后根据我的需要进行过滤,这将使我免于将近 3 个月的工作。
至少能够导入所有玩家的简单信息非常重要,但不一定必须导入每个玩家的所有信息列。 可以导入的列数量已经很完美了。
如果有任何方法,我将不胜感激。
players_20.csv
from https://www.kaggle.com/stefanoleone992/fifa-20-complete-player-dataset
and put the CSV data to the Spreadsheet.如果我的理解是正确的,这个答案怎么样? 请认为这只是几个答案之一。
Unfortunately, the CSV data cannot be directly downloaded from the URL of https://www.kaggle.com/stefanoleone992/fifa-20-complete-player-dataset#players_20.csv
. 要下载 CSV 文件,需要登录 kaggle。 作为其他模式,您也可以使用 API 下载它。 在这个答案中,为了下载 CSV 文件,我使用了 Kaggle 的公共 API。
在使用脚本之前,请先在https://www.kaggle.com
上注册一个账号,然后取回 token 文件。 关于如何获取token文件,可以看官方文档。
为了使用 Kaggle 的公共 API,您必须首先使用 API 令牌进行身份验证。 从站点 header,单击您的用户个人资料图片,然后从下拉菜单中单击“我的帐户”。 这将带您进入https://www.kaggle.com/account上的帐户设置。 向下滚动到标有 API 的页面部分:
要创建新令牌,请单击“创建新 API 令牌”按钮。 这会将新的身份验证令牌下载到您的计算机上。
在此脚本中,使用了下载的令牌文件中的令牌 object。
请将以下脚本复制并粘贴到电子表格的容器绑定脚本中。 请设置csvFilename
、 path
和tokenObject
的变量。 在您的情况下,我已经设置csvFilename
和path
。 所以请只设置你的令牌 object。
function myFunction() {
var csvFilename = "players_20.csv"; // Please set the CSV filename.
var path = "stefanoleone992/fifa-20-complete-player-dataset"; // Please set the path.
var tokenObject = {"username":"###","key":"###"}; // <--- Please set the token object.
var baseUrl = "https://www.kaggle.com/api/v1/datasets/download/";
var url = baseUrl + path;
var params = {headers: {Authorization: "Basic " + Utilities.base64Encode(tokenObject.username + ':' + tokenObject.key)}};
var blob = UrlFetchApp.fetch(url, params).getBlob();
var csvBlob = Utilities.unzip(blob).filter(function(b) {return b.getName() == csvFilename});
if (csvBlob.length == 1) {
var csvData = Utilities.parseCsv(csvBlob[0].getDataAsString());
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
} else {
throw new Error("CSV file of " + csvFilename + " was not found.");
}
}
流动:
该脚本的流程如下。
kaggle datasets download -d stefanoleone992/fifa-20-complete-player-dataset
的 kaggle 命令与 Google Apps Script 一起运行。 至此,ZIP 文件被下载。csvFilename
的 CSV 文件。players_20.csv
数据有18279行104列。Utilities.unzip(blob)
出现错误,请测试从var blob = UrlFetchApp.fetch(url, params).getBlob()
修改为var blob = UrlFetchApp.fetch(url, params).getBlob().setContentTypeFromExtension()
。如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
如果你想 select 你想放的列,请修改上面的示例脚本如下。
var csvData = Utilities.parseCsv(csvBlob[0].getDataAsString());
var needColumns = [1, 2, 3];
csvData = csvData.map(function(row) {return needColumns.map(function(col) {return row[col]})});
var sheet = SpreadsheetApp.getActiveSheet();
var csvData = Utilities.parseCsv(csvBlob[0].getDataAsString()); var needColumns = [1, 2, 3]; csvData = csvData.map(function(row) {return needColumns.map(function(col) {return row[col]})}); var sheet = SpreadsheetApp.getActiveSheet();
从将 CSV 数据放入 Spreadsheet 的基准测试结果来看,例如,使用 Sheets API 放入 CSV 数据怎么样? 为此,请按如下方式修改上述示例脚本。 在运行脚本之前, 请在高级 Google 服务中启用表格 API。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var resource = {requests: [{pasteData: {data: csvBlob[0].getDataAsString(), coordinate: {sheetId: sheet.getSheetId()}, delimiter: ","}}]};
Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var resource = {requests: [{pasteData: {data: csvBlob[0].getDataAsString(), coordinate: {sheetId: sheet.getSheetId()}, delimiter: ","}}]}; Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.