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