将 .XLSX 转换为 Google Sheet 并移动转换后的文件的脚本

pm2*_*588 5 file-conversion google-sheets delete-file google-apps-script google-drive-api

我知道可以使用脚本和驱动 API 将 Excel 文件转换为 Google Sheets,但我正在寻找脚本来转换 Excel 工作表并将转换后的文件移动到其他文件夹。

所以需要的步骤如下:

  1. 将 Excel (.xls/.xlsx) 从文件夹 A 转换为 Google 表格。
  2. 将转换后的文件从 FoldarA 移动到 FolderB。
  3. 从FolderA中删除原始Excel文件
  4. 希望步骤 3 可以避免这种情况,但要避免复制已转换的文件。

Excel 文件正在粘贴到正在同步到 Google Drive 的本地文件夹中,并且文件不大于 3mb。当前脚本如下。这是转换文件,但将它们放置在根文件夹中,并且当脚本再次运行时将重复转换。

 function importXLS(){
  var files = DriveApp.getFolderById('1hjvNIPgKhp2ZKIC7K2kxvJjfIeEYw4BP').searchFiles('title != "nothing"');
  while(files.hasNext()){
    var xFile = files.next();
    var name = xFile.getName();
    if (name.indexOf('.xlsx')>-1){ 
      var ID = xFile.getId();
      var xBlob = xFile.getBlob();
      var newFile = { title : name+'_converted',
                     key : ID
                    }
      file = Drive.Files.insert(newFile, xBlob, {
        convert: true
      });
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 9

  • 您想要将转换后的 Google 电子表格文件创建到“FolderB”。
  • 文件转换后,您想要删除“FolderA”中的 XLSX 文件。
  • 您希望使用 Google Apps 脚本来实现上述目标。

如果我的理解正确的话,这个修改怎么样?在这次修改中,我修改了你的脚本。

修改要点:

  • parents您可以使用请求正文中的属性直接将文件创建到特定文件夹。
  • 您可以使用 删除该文件Drive.Files.remove(fileId)

修改后的脚本:

在使用此脚本之前,请在高级 Google 服务中启用 Drive API

function importXLS(){
  var folderBId = "###"; // Added // Please set the folder ID of "FolderB".

  var files = DriveApp.getFolderById('1hjvNIPgKhp2ZKIC7K2kxvJjfIeEYw4BP').searchFiles('title != "nothing"');
  while(files.hasNext()){
    var xFile = files.next();
    var name = xFile.getName();
    if (name.indexOf('.xlsx')>-1){ 
      var ID = xFile.getId();
      var xBlob = xFile.getBlob();
      var newFile = {
        title : name+'_converted',
        parents: [{id: folderBId}] //  Added
      };
      file = Drive.Files.insert(newFile, xBlob, {
        convert: true
      });
      // Drive.Files.remove(ID); // Added // If this line is run, the original XLSX file is removed. So please be careful this.
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 如果XLSX文件数量较多,执行时间可能会超过6分钟。
  • 关于// Drive.Files.remove(ID);,当你运行这个脚本时,请小心。因为脚本运行时原始XLSX文件被完全删除。所以我评论了这一点。首先,请使用示例文件测试脚本。

参考: