
[英]Generate Reference Number to Google Sheets automatically using Google Apps Script
[英]how to automatically import multiple csv files into Google Sheets using Apps Script
我有很多 CSV 文件,我想將它們全部下載到一張谷歌表格中。 我找到了這個腳本,但它對我不起作用。 問題是什么?
你把一切都做好了,當你執行命令時,它說一切都很好,沒有錯誤請幫助我,謝謝
function importCSVFiles() { var ss = SpreadsheetApp.getActiveSpreadsheet(); const csvFolderName = 'Mean Histogram'; // Name Folder containing csv files and the Archive folder const rootFolderId = '1nffVYwaHVv9DqEPdAvGT7a5gJvH4pHlx'; // Id Root csv folder const archiveFolderId = '1k4gFlU021pvY54bSMSRo2XdGFmAKHeWi'; // Id Archive Folder const destinationSheetName = 'Mean_Histogram'; // Name 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(); if (file.getName (). match (fileName)) { 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); } } } }
我寫了一段代碼來處理你的需求。 我已經包含了一個功能,可以在第一個文件被獲取后跳過循環文件的標題。 您只需指定 csv 文件所在的文件夾的名稱,並且如果您想跳過標題。
function importCsvFiles(folderName, skipHeader) {
const folder = DriveApp.getFoldersByName(folderName).next()
const files = folder.getFiles()
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
let headerWritten = false
while (files.hasNext()){
const file = files.next()
const data = file.getBlob().getDataAsString()
const csv = Utilities.parseCsv(data, ';')
const lastRow = sheet.getLastRow()
// skip headers
if (skipHeader && headerWritten) {
csv.splice(0,1)
} else if (skipHeader && headerWritten == false) {
headerWritten = true
}
sheet.getRange(lastRow+1, 1, csv.length, csv[0].length).setValues(csv)
}
}
function main(){
var name_folder = 'CSV FILES'
var skip_header = true
importCsvFiles(name_folder, skip_header)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.