【问题标题】:Google Apps Script throws "We're sorry, a server error occurred. Please wait a bit and try again. (line 13, file "Code")"Google Apps 脚本抛出“很抱歉,发生服务器错误。请稍等,然后重试。(第 13 行,文件“代码”)”
【发布时间】:2015-03-25 15:13:53
【问题描述】:

我正在尝试将 Google 云端硬盘文件迁移到新域中的新帐户。我以为我已经完成了我的脚本,但是当我尝试对其进行测试时,我不断收到这个非常无益的错误。有谁知道什么类型的问题通常会导致这个错误,或者如何解释它?我已经搜索过,但我没有找到任何有用的东西。

这是我的脚本:

function copyDrive() {


  var originFolder = DriveApp.getFolderById(originFolderID);
  var destination = DriveApp.getFolderById(destinationID);

  var scriptProperties = PropertiesService.getScriptProperties();
  var lastExecution = scriptProperties.getProperty('LAST_EXECUTION');
  if( lastExecution === null )
    lastExecution = '';

  var fileContinuationToken = scriptProperties.getProperty('FILE_CONTINUATION_TOKEN');
  var fileIterator = fileContinuationToken == null ?
    originFolder.getFiles() : DriveApp.continueFileIterator(fileContinuationToken);
  var folderContinuationToken = scriptProperties.getProperty('FOLDER_CONTINUATION_TOKEN');
  var folderIterator = folderContinuationToken == null ?
    originFolder.getFolders() : DriveApp.continueFolderIterator(folderContinuationToken);

  try { 
    var rootFileName;
    while(fileIterator.hasNext()) {
      var rootFile = fileIterator.next();
      var rootFileDateCreated = formatDate(rootFile.getDateCreated());
      if(rootFileDateCreated < lastExecution) {
        rootFileName = rootFile.getName();
        rootFile.makeCopy(rootFileName, destination);
      }
    }
    var folder = folderIterator.next();
    var folderDateCreated = formatDate(folder.getDateCreated());
    if(folderDateCreated < lastExecution) {
      var folderName = folder.getName();
      var folderCopy = folder.makeCopy(folderName, destination);
    }
    copyFiles(folder, folderCopy);
  } catch(err) {
    Logger.log(err);
  }

  if(fileIterator.hasNext()) {
    scriptProperties.setProperty('FILE_CONTINUATION_TOKEN', fileIterator.getContinuationToken());
  } else {
    scriptProperties.deleteProperty('FILE_CONTINUATION_TOKEN');
  }
  if(folderIterator.hasNext()) {
    scriptProperties.setProperty('FOLDER_CONTINUATION_TOKEN', folderIterator.getContinuationToken());
  } else {
    scriptProperties.deleteProperty('FOLDER_CONTINUATION_TOKEN');
  }
  scriptProperties.setProperty('LAST_EXECUTION', formatDate(new Date()));

};

function formatDate(date) { return Utilities.formatDate(date, "GMT", "yyyy-MM-dd HH:mm:ss"); };

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 subFolderContents = passedFolder.getFolders();
  var subFolder;
  var subFolderName;

  while(folderContents.hasNext()) {
    subFolder = subFolderContents.next();
    subFolderName = subFolder.getName();
    var subFolderCopy = targetFolder.createFolder(folderName);
    copyFiles(subFolder, subFolderCopy);
  }
};

我在这一行得到错误:

  var fileIterator = fileContinuationToken == null ? originFolder.getFiles() : DriveApp.continueFileIterator(fileContinuationToken);

有什么想法吗?

【问题讨论】:

  • 只需注释它指向的那一行并检查它是否仍然出错。如果这不起作用,请尝试评论每一行并查看错误是否真的与此功能有关。您始终可以使用调试器和执行记录来找出问题。

标签: google-apps-script server-error


【解决方案1】:

我通过手动删除脚本属性解决了这个问题。这样做之后,我不再收到错误,但最后保存的延续令牌与开始时加载的相同。

【讨论】:

    猜你喜欢
    • 2013-01-13
    • 2013-11-02
    • 2019-12-06
    • 2017-05-02
    • 1970-01-01
    • 2019-08-13
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多