小编Bil*_*ill的帖子

复制整个 Google Drive 文件结构的 Google Apps 脚本;如何避免超时?

我的单位要改用 Google Business 帐户,每个人都需要将他们的云端硬盘文件转移到新帐户。Drive 不允许在这些帐户之间转移所有权,因此我创建了一个脚本来将文件和文件夹从旧帐户复制到新帐户。(旧帐户的内容已移动到与新帐户共享的文件夹中。)

这是我到目前为止所拥有的:

function copyDrive() {
  var originFolder = DriveApp.getFolderById(originFolderID);
  var destination = DriveApp.getFolderById(destinationID);
  copyFiles(originFolder, destination);

};

function copyFiles(passedFolder, targetFolder) {
  var fileContents = passedFolder.getFiles();
  var file;
  var fileName;

  while(fileContents.hasNext()) {
    file = fileContents.next();
    fileName = file.getName();
    file.makeCopy(fileName, targetFolder);
  }
  copySubFolders(passedFolder, targetFolder);
};

function copySubFolders(passedFolder, targetFolder) {
  var folderContents = passedFolder.getFolders();
  var folder;
  var folderName;

  while(folderContents.hasNext()) {
    folder = folderContents.next();
    folderName = folder.getName();
    var subFolderCopy = targetFolder.createFolder(folderName);
    copyFiles(folder, subFolderCopy);
  }
};
Run Code Online (Sandbox Code Playgroud)

请原谅任何不雅;我是新手。该脚本实际上运行良好并保留了文件夹结构,但是在复制了大约 150 个文件和文件夹后它会超时。我一直在研究如何使用延续令牌,并且我已经仔细阅读了这篇文章。我想我被困在了概念层面,因为我不确定延续令牌将如何与我设置的递归函数进行交互。看起来我最终会得到一堆我的copySubFolders …

recursion session-timeout google-apps-script google-drive-api

5
推荐指数
1
解决办法
4278
查看次数