【问题标题】:Script to convert .XLSX to Google Sheet and move converted file将 .XLSX 转换为 Google Sheet 并移动转换后的文件的脚本
【发布时间】:2019-09-27 12:15:03
【问题描述】:

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

所以需要的步骤如下:

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

excel 文件正在粘贴到正在同步到谷歌驱动器的本地文件夹中,文件不大于 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
      });
    }
  }
}

【问题讨论】:

  • 我可以问你关于你的问题吗? 1. 你想用什么语言?请提供您当前的脚本。它将帮助用户思考您的解决方案。 2. 能否提供excel文件的最大大小和文件个数? 3. excel文件和文件夹在你的Google Drive里吗?
  • 感谢您添加信息。我为我糟糕的英语水平道歉。我可以注意到更新,因为我从您的评论中收到了通知。根据您的附加信息,我提出了修改后的脚本。你能确认一下吗?如果我误解了您的问题,我深表歉意。

标签: google-apps-script google-sheets google-drive-api delete-file file-conversion


【解决方案1】:
  • 您希望将转换后的 Google 电子表格文件创建为“FolderB”。
  • 您想在文件转换后删除“FolderA”中的 XLSX 文件。
  • 您希望使用 Google Apps 脚本实现上述目标。

如果我的理解是正确的,那么这个修改呢?在这次修改中,我修改了你的脚本。

修改点:

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

修改脚本:

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.
    }
  }
}

注意:

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

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 2016-03-02
    • 2015-07-04
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多