有没有一种方法可以使用Google Apps脚本将Excel文件转换为Google工作表文件?

时间:2020-06-23 12:14:15

标签: excel google-apps-script google-sheets google-drive-api

我正在尝试将要复制的文件从电子邮件转换为共享驱动器。这些文件保存在xlsx中,如果尝试从源代码下载为.csv文件,则会丢失信息。

function convertExceltoGoogleSpreadsheet(fileName) {
  try {
    fileName = "JNJ Defects Last Shift.xlsx";

    var excelFile = DriveApp.getFilesByName(fileName).next();
    var fileId = excelFile.getId();
    var folderId = "0AEZiKNnbsme8Uk9PVA";
    var blob = excelFile.getBlob();
    //var resource = {
      //title: excelFile.getName(),
      //mimeType: MimeType.GOOGLE_SHEETS,
      //parents: [{id: folderId}],
    //};
   
    blob.setContentType("application/vnd.google-apps.spreadsheet").setName("JNJ Defects Last Shift 22 Jun 20");
    DriveApp.createFile(blob);

    //Drive.Files.insert(resource, blob);
  } catch (f) {
    Logger.log(f.toString());
  }
}

我运行它时收到此错误消息

[20-06-23 07:06:08:638 CDT]异常:无效的参数:file.contentType。

我尝试了contentType的几种变体,但没有设法转换为工作表。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

答案:

您可以使用高级驱动器服务来完成此操作。

更多信息:

要进行转换,您需要特别指定要转换的文件,尽管由于它将默认为Google Sheet格式,所以不需要手动指定MimeType。

代码:

function convertExceltoGoogleSpreadsheet(fileName) {
    fileName = "JNJ Defects Last Shift.xlsx";

    var excelFile = DriveApp.getFilesByName(fileName).next();
    var fileId = excelFile.getId();
    var folderId = "0AEZiKNnbsme8Uk9PVA";
    var blob = excelFile.getBlob();
  
    var file = {
      title: "JNJ Defects Last Shift 22 Jun 20",
      parents: [
        {
          "kind": "drive#parentReference",
          "id": folderId
        }
      ]
    };
  
    file = Drive.Files.insert(file, blob, {
      convert: true      
    });  
}

我希望这对您有帮助!