将Google云端硬盘中的Microsoft Office文档转换为模拟Google文档文件

时间:2017-07-30 20:07:56

标签: excel ms-office google-docs google-drive-realtime-api

我正在尝试将我的Google云端硬盘中的所有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.

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

2 个答案:

答案 0 :(得分:0)

您需要使用类似

的内容创建文档

SpreadsheetApp.create("Example File Name")

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

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

答案 1 :(得分:0)

修改要点:

  1. Drive.Files.insert()的响应是JSON数据。这不是文件。所以发生这样的错误。当您看到使用file的{​​{1}}时,您可以看到JSON数据。
  2. 在这种情况下,Logger.log(file)"parents": [{id: folderid}]
  3. 您可以使用Drive API直接将转换后的文件创建到特定文件夹。没有必要使用folderGoogify
  4. 修改后的脚本反映如下。

    修改后的脚本:

    addFile()

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