所以我試圖從 API 匯入一個 csv 并將其放入電子表格中,但是當我在范圍內寫入值時,我一直得到該列是 15 而不是 14,當我將其設為 15 時,它給出的范圍是 14。
有些事情發生了,但沒有額外的標題。我需要一個適當的穩定修復,請
function importCSVFromAPI() {
var response = UrlFetchApp.fetch("https://www.gw2spidy.com/api/v0.9/csv/all-items/all");
// Is the attachment a CSV file
/* var file = Utilities.parseCsv(response.getDataAsString(), ","); */
var data = response.getBlob().getDataAsString();
data.replace("\"","");
var lines = data.split("\n");
var data = lines.map(function(lin){return lin.split(",")});
var dest = SpreadsheetApp.getActiveSheet();
dest.clear();
Logger.log(data[0].length);
dest.getRange(1, 1, data.length, data[0].length).setValues(data);
}
uj5u.com熱心網友回復:
我認為來自 URL 的 CSV 資料可能很大。在這種情況下,如何使用 Sheets API?當使用 Sheets API 時,可以減少將 CSV 資料放入電子表格的程序成本。而且,CSV 資料會自動決議。通過這個,我認為你的問題可能會被洗掉。當這反映在你的腳本中時,它變成如下。
修改后的腳本:
在使用此腳本之前,請在高級 Google 服務中啟用 Sheets API。
function importCSVFromAPI() {
var response = UrlFetchApp.fetch("https://www.gw2spidy.com/api/v0.9/csv/all-items/all");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dest = ss.getActiveSheet();
dest.clear();
SpreadsheetApp.flush();
var req = { pasteData: { data: response.getContentText(), delimiter: ",", coordinate: { sheetId: dest.getSheetId() } } };
Sheets.Spreadsheets.batchUpdate({requests: [req]}, ss.getId());
}
- 運行此腳本時,檢索到的 CSV 資料將放入活動作業表。
參考:
- 方法:電子表格.batchUpdate
- 粘貼資料請求
uj5u.com熱心網友回復:
您的資料在標題中有逗號
23791,"Memoirs of Captain Greywind**,** Unabridged"
所以用逗號分割會為該行創建一個額外的列。您需要在拆分之前或將其分配給范圍之前清理標題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/325139.html
