Google云端硬盘 - 如何将特定文件(.pdf)从特定文件夹移至另一个

时间:2017-08-29 10:34:27

标签: javascript

我的英语是漏勺,我在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行,文件"移动")

感谢哈桑,我正在研究他建议的例子。 但是,如果有人提供进一步的帮助......我提前感谢。

1 个答案:

答案 0 :(得分:0)

问题是DriveApp Api没有任何方法可以返回单File。所以你必须经过FileIterator

首先,您不必在function moveFiles(source_folder, dest_folder)中放置参数,source_folderdest_folder在函数内定义。但我认为你在互联网上找到的代码犯了这个错误 此外,这里有一些错误的建议:当您致电DriveApp.getFolderById()时,API会返回Folder。因此,您不再需要在此变量上调用DriveApp(例如DriveApp.dest_folder.addFile(file);是一个糟糕的调用,因为方法addFile()适用于Folder类型,{ {1}}已经是dest_folder

所以你可以试试这个,它对我有用:

Folder

我希望它能帮助你:)