1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
以下代碼的工作原理如下:
從 csv 文件中獲取數(shù)據(jù)作為數(shù)組
在標(biāo)題行后插入多行
在工作表中設(shè)置數(shù)組
導(dǎo)入 csv 文件后將其移至存檔文件夾,這樣就不會(huì)再次導(dǎo)入它們
然后移至下一個(gè)文件,直到?jīng)]有更多文件可供導(dǎo)入
您需要?jiǎng)?chuàng)建一個(gè)存檔文件夾來存儲(chǔ)導(dǎo)入后的 csv 文件。為此,我通常會(huì)在包含 csv 文件夾的文件夾中創(chuàng)建一個(gè)。
在代碼中,您需要提供存檔文件夾和根文件夾(包含 CSV 文件夾的文件夾)的文件夾 ID 以及電子表格中目標(biāo)工作表的名稱。這些都可以在代碼中的前四個(gè)變量中設(shè)置。(我已經(jīng)csvFolderName
根據(jù)您上面提供的信息設(shè)置為“CSVfolder”。
保存此代碼后,在其上創(chuàng)建一個(gè)觸發(fā)器以在打開時(shí)運(yùn)行。
這是代碼:
function importCSVFiles()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
const csvFolderName = 'CSVfolder'; // Folder containing csv files and the Archive folder
const rootFolderId = 'id_of_folder_containing_CSVfolder'; // Root folder
const archiveFolderId = 'id_of_archiveFolder'; // Archive Folder
const destinationSheetName = 'name_of_destination_sheet_in_spreadsheet'; // destination sheet in spreadsheet
const root = DriveApp.getFolderById(rootFolderId);
const archiveFolder = DriveApp.getFolderById(archiveFolderId);
const fileName =/ *.csv/;
var rootFolders = root.getFolders();
const sheet = ss.getSheetByName(destinationSheetName);
var csvArray = [];
while (rootFolders.hasNext())
{
var folder = rootFolders.next ();
Logger.log('folder.getName()',folder.getName());
if (folder.getName() === csvFolderName)
{
importCSV(folder);
}
else
{
var csvFolder = folder.getFoldersByName(csvFolderName);
while (csvFolder.hasNext())
{
importCSV(csvFolder.next());
}
}
}
function importCSV(folder)
{
var files = folder.getFiles();
while (files.hasNext())
{
var file = files.next();
Logger.log('file.getName()',file.getName());
csvArray = file.getBlob().getDataAsString("UTF-8");
csvArray = Utilities.parseCsv(csvArray);
csvArray.shift();
sheet.insertRowsAfter(1,csvArray.length);
sheet.getRange (2,1,csvArray.length,csvArray[0].length).setValues(csvArray);
file.moveTo(archiveFolder);
}
}
}
如果您似乎對分隔符有問題,您可能需要通過將上面的代碼行替換為來將其專門設(shè)置為自定義分隔csvArray = Utilities.parseCsv(csvArray);符csvArray = Utilities.parseCsv(csvArray,';');
添加回答
舉報(bào)