簡體   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