将 Google 驱动器中的 Microsoft Office 文档转换为模拟 Google 文档文件
Converting Microsoft Office docs in Google Drive to analog Google Docs files
我正在尝试将我 Google 驱动器上一个文件夹中的所有 Office 文件(例如 Word 文档、Excel 电子表格、PowerPoint 演示文稿等)转换到他们的 google 文档等价物。
我在 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.
如何调整我的代码,以便将转换后的文件识别为文件,而不是对象?
您需要使用类似
的内容创建文档
SpreadsheetApp.create("Example File Name")
这将创建电子表格。您正在尝试将信息添加到对象,而不是文件,这会将其添加到文件。
Google Sheets Script Error - Cannot convert [object Object] to Spreadsheet
修改点:
Drive.Files.insert()
的响应是 JSON 数据。这不是文件。所以出现这样的错误。当您使用 Logger.log(file)
查看 file
时,您可以看到 JSON 数据。
- 在这种情况下,
"parents": [{id: folderid}]
是 folderGoogify
。
- 您可以使用 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});
}
}
如果我误解了你的问题,我很抱歉。
我正在尝试将我 Google 驱动器上一个文件夹中的所有 Office 文件(例如 Word 文档、Excel 电子表格、PowerPoint 演示文稿等)转换到他们的 google 文档等价物。
我在 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.
如何调整我的代码,以便将转换后的文件识别为文件,而不是对象?
您需要使用类似
的内容创建文档SpreadsheetApp.create("Example File Name")
这将创建电子表格。您正在尝试将信息添加到对象,而不是文件,这会将其添加到文件。
Google Sheets Script Error - Cannot convert [object Object] to Spreadsheet
修改点:
Drive.Files.insert()
的响应是 JSON 数据。这不是文件。所以出现这样的错误。当您使用Logger.log(file)
查看file
时,您可以看到 JSON 数据。- 在这种情况下,
"parents": [{id: folderid}]
是folderGoogify
。 - 您可以使用 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});
}
}
如果我误解了你的问题,我很抱歉。