【问题标题】:Converting Microsoft Office docs in Google Drive to analog Google Docs files将 Google Drive 中的 Microsoft Office 文档转换为模拟的 Google Docs 文件
【发布时间】:2017-07-30 20:07:56
【问题描述】:

我正在尝试将我的 Google Drive 上的一个文件夹中的所有 Office 文件(例如 Word 文档、Excel 电子表格、PowerPoint 演示文稿等)转换为它们的 google doc 等效文件。

我正在使用 Google Apps 脚本中的高级驱动器服务来执行此任务。

我的实现如下:

function convert() {

 var targetFolder_1 = DriveApp.getFoldersByName('Office Folder'); 
 var targetFolder =  targetFolder_1.next();                       
 var folderGoogify_1 = DriveApp.getFoldersByName('Empty Folder');
 var folderGoogify = folderGoogify_1.next();  
 var counter = 0; 

 var files = targetFolder.getFiles(); 
 var folderID = targetFolder.getId();

 while (files.hasNext()) {

   var nextFile = files.next();
   var blob = nextFile.getBlob();
   var fileName = nextFile.getName();

    var file = {
      title: fileName,
      "parents": [{
        "kind": "drive#parentReference",
        "id": folderID
      }]
    };

      file = Drive.Files.insert(file, blob, {
      convert: true
       });

     counter++;
     folderGoogify.addFile(file);
 }
}

但是,在最后一行我收到以下错误:

Cannot convert [object Object] to File.

如何调整我的代码,以便将转换后的文件识别为文件,而不是对象?

【问题讨论】:

    标签: excel google-apps-script google-drive-api ms-office google-docs


    【解决方案1】:

    修改点:

    1. Drive.Files.insert() 的响应是 JSON 数据。这不是文件。所以会出现这样的错误。当您使用Logger.log(file) 看到file 时,您可以看到JSON 数据。
    2. 在这种情况下,"parents": [{id: folderid}]folderGoogify
    3. 您可以使用 Drive API 直接将转换后的文件创建到特定文件夹。不必使用addFile()

    反映它们的修改脚本如下。

    修改后的脚本:

    function convert() {
      var targetFolder_1 = DriveApp.getFoldersByName('Office Folder');
      var targetFolder =  targetFolder_1.next();
      var folderGoogify_1 = DriveApp.getFoldersByName('Empty Folder');
      var folderGoogify = folderGoogify_1.next();
      var counter = 0; 
      var files = targetFolder.getFiles();
      while (files.hasNext()) {
        var nextFile = files.next();
        var blob = nextFile.getBlob();
        var fileName = nextFile.getName();
        var file = {
          title: fileName,
          "parents": [{"id": folderGoogify.getId()}],
          "kind": "drive#parentReference",
        };
        counter++;
        file = Drive.Files.insert(file, blob, {convert: true});
      }
    }
    

    如果我误解了你的问题,我很抱歉。

    【讨论】:

      【解决方案2】:

      您需要使用类似

      的内容创建文档

      SpreadsheetApp.create("Example File Name")

      这将创建电子表格。您正在尝试将信息添加到对象而不是文件,这会将其添加到文件中。

      Google Sheets Script Error - Cannot convert [object Object] to Spreadsheet

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多