我的英语是漏勺,我在Javascript中的编程技巧也一样。我在Google云端硬盘的特定文件夹中有几个PDF文件(大约10个)。每天一次,在午夜附近,我必须在特定的Google云端硬盘文件夹中单独移动这些文件(一对一)。 实际上我手工制作这个活动,所以我试着用一个简单的脚本自动化它。
我可以指向特定文件夹,但不能指向特定文件。 在我在Internet上找到的示例中,文件夹中包含的所有文件都被移动到另一个文件夹,因此使用filesIterator技术。 但我不需要迭代,我需要指向特定文件并将其移动到另一个文件夹。
这是我的五个(困惑的)程序行:
function moveFiles(source_folder, dest_folder) {
var source_folder = DriveApp.getFolderById('0B42Jhhzp_5X7QUlMdE9SZS0wMms');
var dest_folder = DriveApp.getFolderById('0B42Jhhzp_5X7TFZBMXpfeWpZNFk');
var file = getFilesByName('caa20170829.pdf');
// var files = source_folder.getFiles();
// Logger.log(file.getAs(MimeType.HTML).getDataAsString());
dest_folder.addFile(file);
source_folder.removeFile(file);
}
我收到的错误消息:
ReferenceError:" getFilesByName"没有定义的。 (第6行,文件"移动")
任何帮助将不胜感激!
根据Max Deepfield的建议(感谢Max),我编辑了第6行,如下所示
var file = DriveApp.getFilesByName('caa20170829.pdf');
并将错误消息更改为
无法找到addFile(FileIterator)方法。 (第11行,文件"移动")
现在我编辑了11行,如下所示
DriveApp.dest_folder.addFile(file);
并且错误消息会再次更改...
TypeError:无法调用方法" addFile"未定义的。 (第11行,文件"移动")
感谢哈桑,我正在研究他建议的例子。 但是,如果有人提供进一步的帮助......我提前感谢。
答案 0 :(得分:0)
问题是DriveApp Api没有任何方法可以返回单File
。所以你必须经过FileIterator
。
首先,您不必在function moveFiles(source_folder, dest_folder)
中放置参数,source_folder
和dest_folder
在函数内定义。但我认为你在互联网上找到的代码犯了这个错误
此外,这里有一些错误的建议:当您致电DriveApp.getFolderById()
时,API会返回Folder
。因此,您不再需要在此变量上调用DriveApp
(例如DriveApp.dest_folder.addFile(file);
是一个糟糕的调用,因为方法addFile()
适用于Folder
类型,{ {1}}已经是dest_folder
。
所以你可以试试这个,它对我有用:
Folder
我希望它能帮助你:)