我正在寻找一个脚本,该脚本将复制添加到Google云端硬盘->共享驱动器->(驱动器名称)的所有新文件的副本
理想情况下,我希望将此副本移到另一个共享驱动器上,并且名称前不要插入标题"Copy of "
,但是我不确定是否可以。 (注意:我无法使它正常工作……也许是因为另一个共享驱动器归另一个驱动器所有?)
我的问题之一是我不了解如何将复制功能限制为仅在特定日期之后新添加或添加的文件。
我所有的测试都导致该文件夹的完整副本。我似乎无法将其限制为新文件。另外,我似乎无法避免在每个新文件名的开头添加“ Copy of”。
我能够上班的东西:我可以(是)将任何给定文件夹的全部内容(所有日期)复制到我在Google根驱动器(非共享)中创建的文件夹(我将其命名为备份)。
function moveFiles(sourceFileId, targetFolderId) {
var file = DriveApp.getFileById(sourceFileId);
file.getParents().next().removeFile(file);
DriveApp.getFolderById(targetFolderId).addFile(file);
}
答案 0 :(得分:1)
要在上次运行脚本后检查创建的文件,可以使用属性服务[1]保存日期毫秒,并将其与文件创建的日期进行比较,您可以使用getCreated()
函数到每个文件[2]。要使用自定义名称复制文件,请使用makeCopy
函数[3]。要完全删除文件(而不是垃圾箱),请使用Drive Advance Service的删除请求[4](必须将其激活)[5]。
function moveFiles(sourceDriveId, targetFolderId) {
var scriptProperties = PropertiesService.getScriptProperties();
var lastUpdate = scriptProperties.getProperty('lastUpdate');
if(lastUpdate == null) {
scriptProperties.setProperty('lastUpdate', new Date().getTime());
return;
}
var targetFolder = DriveApp.getFolderById(targetFolderId);
var sourceDrive = DriveApp.getFolderById(sourceDriveId);
var files = sourceDrive.getFiles();
while(files.hasNext()){
var file = files.next();
if(file.getDateCreated().getTime() > lastUpdate) {
file.makeCopy(file.getName(), targetFolder);
Drive.Files.remove(file.getId(), {supportsAllDrives: true});
}
}
scriptProperties.setProperty('lastUpdate', new Date().getTime());
}
function test() {
moveFiles("[SOURCE-DRIVE-ID]", "[TARGET-FOLDER-ID]");
}
[1] https://developers.google.com/apps-script/reference/properties/properties
[2] https://developers.google.com/apps-script/reference/drive/file#getdatecreated
[3] https://developers.google.com/apps-script/reference/drive/file#makecopyname,-destination
[4] https://developers.google.com/drive/api/v3/reference/files/delete
[5] https://developers.google.com/apps-script/advanced/drive