晚上好
我试图找出一种方法来自动删除文件名重复的文件从谷歌驱动器文件夹。我想保留创建日期最早的文件,将其他文件视为重复文件,并删除重复文件。
我觉得使用下面的AppScript代码(来自这个网站:https://hackernoon.com/how-to-find-and-delete-duplicate-files-in-google-drive)。唯一的问题是代码似乎保留了最新的文件,而不是最旧的文件。你知道我能做什么来改变这段代码,以保留最旧的文件而不是最新的文件吗?如果你有其他的代码来实现我的目标,也请分享。
谢谢你!
const FOLDER_ID = "INSERTIDHERE";
// Add id of the folder to check for duplicate
/*
* Function looks for duplicate file names in designated folder and removes them.
* @param {String} fileName
*/
function removeDuplicateFile() {
let folder = DriveApp.getFolderById(FOLDER_ID);
let files = folder.getFiles();
let fileList = [];
// if no file is found return null
if (!files.hasNext()) {
return;
}
// else
while (files.hasNext()) {
let file = files.next(),
name = file.getName(),
size = file.getSize();
// checking this way always leaves first file not deleted
if (isDuplicateFile(fileList, name, size)) {
file.setTrashed(true);
} else {
fileList.push([name, size]);
}
}
}
/*
* Function is helper function of removeDuplicateFile function.
* It checks if theres already a file in the given lst with same name and size and returns true or false
* @param {List} lst
* @param {String} name
* @param {Number} size
* @returns {Boolean}
*/
function isDuplicateFile(lst, name, size) {
for (let i = 0; i < lst.length; i++) {
if (lst[i][0] === name && lst[i][1] === size) return true;
}
return false;
}
/*
* Delete all the triggers if there are any
*/
var deleteTrigger = () => {
let triggersCollection = ScriptApp.getProjectTriggers();
if (triggersCollection.length <= 0) {
console.log(`Event doesnot have trigger id`);
} else {
triggersCollection.forEach((trigger) => ScriptApp.deleteTrigger(trigger));
}
return;
};
/*
* Create a trigger function for file which also deletes previous triggers if there are.
*/
function removeDuplicateFileTrigger() {
// First Delete existing triggers
deleteTrigger();
// now remove duplicate files
removeDuplicateFile();
}
3条答案
按热度按时间sg24os4d1#
我相信你的目标如下。
在您的脚本中,不包括用于检查创建日期的脚本。那么,在这种情况下,下面的修改怎么样?在该修改中,如下修改函数
removeDuplicateFile()
。修改脚本:
isDuplicateFile
。参考资料:
uklbhaso2#
您可能需要启用驱动器API
zf9nrax13#
保留最旧文件并删除Google云端硬盘中重复文件的替代方案
请注意开启驱动器API。