我想从任何URL上载特定驱动器中的图像文件。我无法从文件夹获取createfile方法。该方法甚至没有显示。
这是我的代码:
function downloadFile() {
var fileName = "";
var fileSize = 0;
var response = UrlFetchApp.fetch('https://drive.google.com/open?id=1M_OcuVU71GAizO3TnzLKE24VnqEfiOws', {muteHttpExceptions: true});
var rc = response.getResponseCode();
if (rc == 200) {
var fileBlob = response.getBlob()
var folder = DriveApp.getFilesByName('101');
if (folder != null) {
var file = createFile(folder)
fileName = file.getName();
fileSize = file.getSize();
}
}
var fileInfo = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
return fileInfo;
}
function createFile(folderName) {
var folder = DriveApp.getFoldersByName(folderName);
folder.createFile(fileBlob;
}
您似乎在代码中有一些错误:
在createFile()
函数中,您没有关闭folder.createFile(fileBlob)
调用的括号。
您没有将Blob传递给createFile()
函数。
[folderName
是FilesIterator对象(请参阅DriveApp.getFilesByName()的返回类型),但之后将其用作字符串。
您的两个错误均已修复的代码应如下所示:
function downloadFile() {
var fileName = "";
var fileSize = 0;
var response = UrlFetchApp.fetch('https://drive.google.com/open?id=1M_OcuVU71GAizO3TnzLKE24VnqEfiOws', {muteHttpExceptions: true});
var rc = response.getResponseCode();
if (rc == 200) {
var fileBlob = response.getBlob();
var folderIterator = DriveApp.getFilesByName('101');
if (folderIterator.hasNext()) {
var file = folderIterator.next().createFile(fileBlob);
fileName = file.getName();
fileSize = file.getSize();
}
}
var fileInfo = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
return fileInfo;
}
[请注意您的createFile()
函数已被删除,因为它不需要。要检查文件夹是否存在,在迭代器中调用hasNext()
方法,然后使用next()
检索实际文件夹。
此外,请考虑使用createFile(name, content)
将想要的任何名称传递给新创建的文件>