Error : I want to convert the file from XLSX to csv using google script

Error : I want to convert the file from XLSX to csv using google script

您好,在将 excel 转换为 csv 的 运行 代码时遇到错误。请指导编辑什么来解决查询。

 function makeCSV() {
 var SourceFolder = DriveApp.getFolderById("1aoonhCebvI5DddvJVGTzBvWs2BPn_yXN")
 var DestinationFolder = DriveApp.getFolderById("1LB0Em4vYFJV8vJIEiLt6Tg5pnzPATZEj")
 var searchQuery = "mimeType='" + MimeType.MICROSOFT_EXCEL + "' or mimeType='" + 
  MimeType.MICROSOFT_EXCEL_LEGACY + "'";
 var sourceFiles = SourceFolder.searchFiles(searchQuery);

 var now = new Date();
var properties = PropertiesService.getScriptProperties();
 var cutoff_datetime = properties.getProperty('last_execution_time');
if(cutoff_datetime)
 cutoff_datetime = new Date(cutoff_datetime);
while (sourceFiles.hasNext()){
var sourceFile = sourceFiles.next();

 if(!cutoff_datetime || sourceFile.getDateCreated() > cutoff_datetime){
  var fileId = sourceFile.getId();

var Spreadsheet = Drive.Files.copy({mimeType: MimeType.csv, parents: 
[{id:"1LB0Em4vYFJV8vJIEiLt6Tg5pnzPATZEj"}]}, fileId);
}
}
properties.setProperty('last_execution_time',now.toString());
}

遗憾的是,无法使用 Google Apps 脚本将 XLSX 数据直接转换为 CSV 数据。而且,Drive.Files.copy 可以将 non-Google 个 Docs 文件转换为 Google 个 Docs 文件。请注意这一点。我认为这就是您当前问题的原因。要使用 Google Apps 脚本将 XLSX 数据转换为 CSV 数据,需要执行以下流程。

  1. 将 XLSX 数据转换为 Google 电子表格。
  2. 将 Google 电子表格转换为 CSV 数据。
  3. 删除 Google 电子表格。

当这个流程反映在你的脚本中时,它变成如下。

修改后的脚本:

function makeCSV() {
  var SourceFolder = DriveApp.getFolderById("1aoonhCebvI5DddvJVGTzBvWs2BPn_yXN");
  var DestinationFolder = DriveApp.getFolderById("1LB0Em4vYFJV8vJIEiLt6Tg5pnzPATZEj");
  var searchQuery = "mimeType='" + MimeType.MICROSOFT_EXCEL + "' or mimeType='" + MimeType.MICROSOFT_EXCEL_LEGACY + "'";
  var sourceFiles = SourceFolder.searchFiles(searchQuery);
  var now = new Date();
  var properties = PropertiesService.getScriptProperties();
  var cutoff_datetime = properties.getProperty('last_execution_time');
  if (cutoff_datetime) cutoff_datetime = new Date(cutoff_datetime);
  var token = ScriptApp.getOAuthToken();
  while (sourceFiles.hasNext()) {
    var sourceFile = sourceFiles.next();
    if (!cutoff_datetime || sourceFile.getDateCreated() > cutoff_datetime) {
      var fileId = sourceFile.getId();
      var ssId = Drive.Files.copy({mimeType: MimeType.GOOGLE_SHEETS, parents: [{ id: "1LB0Em4vYFJV8vJIEiLt6Tg5pnzPATZEj" }]}, fileId).id;
      var url = "https://docs.google.com/spreadsheets/export?exportFormat=csv&id=" + ssId;
      var blob = UrlFetchApp.fetch(url, {headers: {authorization: "Bearer " + token}}).getBlob();
      DestinationFolder.createFile(blob.setName(sourceFile.getName().split(".")[0] + ".csv"));
      DriveApp.getFileById(ssId).setTrashed(true);
    }
  }
  properties.setProperty('last_execution_time', now.toString());
}
  • 当此脚本为运行时,XLSX数据被转换为Google电子表格,Google电子表格被转换为CSV数据。 CSV 文件创建到 DestinationFolder 文件夹。

注:

  • 此脚本使用了驱动器 API。因此,请在高级 Google 服务中启用驱动器 API。

参考文献: