我正在尝试将Google云端硬盘文件迁移到新域中的新帐户。我以为我已经完成了我的脚本,但是当我尝试测试它时,我不断得到这个非常无益的错误。有谁知道什么样的问题通常会导致这个错误,或者如何解释它?我搜索了SO,但我找不到任何有用的东西。
这是我的剧本:
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);
有什么想法吗?
答案 0 :(得分:1)
我通过手动删除脚本属性解决了这个问题。在这样做后,我不再得到错误,但最后保存的延续令牌与开头加载的令牌相同。