我正在尝试将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.
如何调整我的代码,以便将转换后的文件识别为文件,而不是对象?
修改点数:
Drive.Files.insert()
的响应是 JSON 数据。这不是文件。所以会发生这样的错误。当您看到使用Logger.log(file)
的file
时,您可以看到 JSON 数据。- 在这种情况下,
"parents": [{id: folderid}]
是folderGoogify
. - 您可以使用云端硬盘 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 表格脚本错误 - 无法将 [对象对象] 转换为电子表格