【问题标题】:Google Drive - Shared Drives - Script to automatically copy when any new files are added to a shared driveGoogle 云端硬盘 - 共享云端硬盘 - 将任何新文件添加到共享云端硬盘时自动复制的脚本
【发布时间】:2019-11-27 21:36:12
【问题描述】:

我希望使用一个脚本来复制添加到 Google Drive -> Shared Drive -> (Drive name) 的任何新文件

理想情况下,我希望将此副本移动到另一个共享驱动器,并且不要在名称前插入标题"Copy of "...但我不确定是否可以。 (旁注:我无法让它工作......也许是因为另一个共享驱动器归另一个人所有?)

我的一个问题是我不明白如何将复制功能限制为仅新添加的文件和在特定日期之后添加的文件。

我的所有测试都生成了该文件夹的完整副本。我似乎无法将其限制为新文件。另外,我似乎无法避免在每个新文件名的开头添加“副本”。

我能够开始工作:我可以(是)将任何给定文件夹的全部内容(所有日期)复制到我在根(非共享)谷歌驱动器中创建的文件夹(我将其命名为备份)..

function moveFiles(sourceFileId, targetFolderId) { 
    var file = DriveApp.getFileById(sourceFileId); 
    file.getParents().next().removeFile(file); 
    DriveApp.getFolderById(targetFolderId).addFile(file); 
}

【问题讨论】:

  • 无需为刚接触编程而道歉。你的 Q 位置很好。就我个人而言,我发现 Google 的应用脚本文档既繁琐又令人困惑……

标签: google-apps-script google-drive-api google-drive-shared-drive


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    相关资源
    最近更新 更多