簡體   English   中英

使用 Google Apps Script 將 .CSV 文件數據復制到 Google 表格

[英]Using Google Apps Script to copy .CSV file data to Google Sheets

我需要遍歷源文件夾中的每個 .CSV 文件,並將每個文件中的數據復制到一個 Google Sheets 文件中的新工作表/標簽中。 我找到了一些與此主題相關的答案,但是我在兩個代碼集上都遇到了錯誤。 這是我試圖從中構建解決方案的代碼:

function appendCSV() {  
    var file = DriveApp.getFilesByName("myCSVFile.csv").next(); 
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var lastRow=sheet.getLastRow(); 
    sheet.getRange(lastRow, 1, csvData.length, csvData[0].length).setValues(csvData);
}

這是我遇到的第一個錯誤:

無法檢索下一個對象:迭代器已結束。 (第 2 行,文件“代碼”)

我可以從第 2 行中刪除.next()方法,然后出現另一個錯誤:

類型錯誤:在對象 FileIterator 中找不到函數 getBlob。 (第 3 行,文件“代碼”)

任何人都可以確定這里可能出了什么問題嗎?

您需要提供電子表格 ID 和文件夾 ID。 此外,您可能希望更改創建的工作表/選項卡的工作表名稱。

function loadCSVFilesIntoSheets() { 
  var ss=SpreadsheetApp.openById('SpreadsheetId')
  var folder=DriveApp.getFolderById('folderId');
  var files=folder.getFilesByType(MimeType.CSV);
  while(files.hasNext()) {
    var file=files.next();
    var vA=Utilities.parseCsv(file.getBlob().getDataAsString());
    var ts=Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"MM/dd/yy HH:mm:ss")
    var sh=ss.insertSheet(file.getName()+'-'+ts);
    sh.getRange(1,1,vA.length,vA[0].length).setValues(vA);
  }
}

獲取電子表格 ID: https://docs.google.com/spreadsheets/d/SpreadsheetIdHere/edit#gid=1655026329 : https://docs.google.com/spreadsheets/d/SpreadsheetIdHere/edit#gid=1655026329

文件夾 ID: https://drive.google.com/drive/folders/folder id here : https://drive.google.com/drive/folders/folder id here

驅動程序

Utilities.parseCsv()

Utilities.formatDate()

你得到的第一個錯誤

無法檢索下一個對象:迭代器已結束。 (第 2 行,文件“代碼”)

發生是因為顯然沒有任何名為myCSVFile.csv文件

var file = DriveApp.getFilesByName("myCSVFile.csv").next();

出於同樣的原因,出現第二個錯誤。

首先,您應該仔細檢查文件名是否正確,以及該文件是否由用於運行腳本的同一帳戶擁有或共享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM