Google apps script 将.XLSX转换为Google工作表并移动转换文件的脚本

Google apps script 将.XLSX转换为Google工作表并移动转换文件的脚本,google-apps-script,google-sheets,google-drive-api,delete-file,file-conversion,Google Apps Script,Google Sheets,Google Drive Api,Delete File,File Conversion,我知道可以使用脚本和驱动API将excel文件转换为Google工作表,但我正在寻找脚本来转换excel工作表并将转换后的文件移动到其他文件夹 因此,所需步骤如下: 将excel(.xls/.xlsx)从FolderA转换为Google工作表 将转换后的文件从FoldarA移动到FolderB 从FolderA中删除原始excel文件 希望第3步可以避免这种情况,但避免复制已转换的文件 excel文件正在粘贴到一个本地文件夹中,该文件夹正在同步到google drive,文件大小不超过3mb。当

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

因此,所需步骤如下:

  • 将excel(.xls/.xlsx)从FolderA转换为Google工作表
  • 将转换后的文件从FoldarA移动到FolderB
  • 从FolderA中删除原始excel文件
  • 希望第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
          });
        }
      }
    }
    
    • 您想将转换后的Google电子表格文件创建为“FolderB”
    • 您希望在转换文件后删除“FolderA”中的XLSX文件
    • 您希望使用谷歌应用程序脚本实现上述功能
    如果我的理解正确的话,这次修改怎么样?在这次修改中,我修改了您的脚本

    修改点:
    • 您可以使用请求正文中的
      parents
      属性直接将文件创建到特定文件夹
    • 您可以使用
      Drive.Files.remove(fileId)
      删除该文件
    修改脚本: 注:
    • 如果XLSX文件的数量很大,则执行时间可能超过6分钟
    • 关于
      //Drive.Files.remove(ID),运行此脚本时,请小心。因为在运行脚本时,原始XLSX文件将被完全删除。所以我评论了这个。首先,请使用示例文件测试脚本。
    参考资料:

    我可以问一下您的问题吗?1.你想用什么语言?请提供您当前的脚本。它将帮助用户思考您的解决方案。2.能否提供excel文件的最大大小和文件数?3.excel文件和文件夹是否在您的Google Drive中?感谢您添加信息。我为我糟糕的英语水平道歉。我可以注意到更新,因为我收到了来自您评论的通知。根据您的补充信息,我建议修改脚本。你能确认一下吗?如果我误解了你的问题,我道歉。
    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.
        }
      }
    }