繁体   English   中英

如何使用 Apps 脚本自动将多个 csv 文件导入 Google 表格

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

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM