将 Google Drive 中的 Microsoft Office 文档转换为模拟 Google 文档文件



我正在尝试将Google云端硬盘文件夹中的所有Office文件(例如Word文档,Excel电子表格,PowerPoint演示文稿等(转换为Google文档等效项。

我正在使用Google Apps Script中的高级云端硬盘服务来执行此任务。

我的实现如下:

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.

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

修改点数:

  1. Drive.Files.insert()的响应是 JSON 数据。这不是文件。所以会发生这样的错误。当您看到使用Logger.log(file)file时,您可以看到 JSON 数据。
  2. 在这种情况下,"parents": [{id: folderid}]folderGoogify.
  3. 您可以使用云端硬盘 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});
}
}

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

您需要使用类似以下内容创建文档

SpreadsheetApp.create("Example File Name")

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

Google 表格脚本错误 - 无法将 [对象对象] 转换为电子表格

相关内容

  • 没有找到相关文章

最新更新