[英]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.