所以我可以用c#生成大约2000个单词文档,但是,我需要将它们上传到谷歌文档,采用原生谷歌文档格式。
我查看This guide尝试转换它们,但是,代码在倒数第二行失败。
(我的代码如下)
function myFunction() {
var folder = DriveApp.getFoldersByName("test").next();
var contents = folder.getFiles();
while (contents.hasNext()){
var file = contents.next();
var fileName = file.getName();
var officeFile = DriveApp.getFilesByName(fileName).next();
// Use the Advanced Drive API to upload the Excel file to Drive
// convert = true will convert the file to the corresponding Google Docs format
var uploadFile = JSON.parse(UrlFetchApp.fetch(
"https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true",
{
method: "POST",
contentType: officeFile.getMimeType(),
payload: officeFile.getBlob().getBytes(),
headers: {
"Authorization" : "Bearer " + ScriptApp.getOAuthToken()
},
muteHttpExceptions: true
}
).getContentText());
// Remove the file extension from the original file name
var fileName2 = officeFile.getName();
fileName2 = fileName2.substr(0, fileName2.lastIndexOf("."));
// Update the name of the Google Sheet created from the Excel sheet
DriveApp.getFileById(uploadFile.getID()).setName(fileName2); // FAILS HERE
//Logger.log(uploadFile.alternateLink);
}}
TypeError:无法在对象[object Object]中找到函数getID。 (第33行,文件“代码”)
我理解这是什么类型的错误,但是,我不一定知道如何解决它。
答案 0 :(得分:1)
您不需要任何UrlFetchApp操作。 Advanced Drive Service提供转化作为copy
方法的一部分。需要两行代码:
var fileId = 'ID_of_Word_file';
Drive.Files.copy({}, fileId, {'convert': true});
您需要在scropt菜单中启用此服务:请参阅参考资料>高级服务。
如果遍历文件夹,请使用.next()
从文件迭代器获取每个文件,并使用getId()
获取其ID;按上述步骤进行。
第一个参数中的空对象可用于命名新文件:例如,它可以是{'title': 'Name of new file'}