根据文件和文件夹名称中的常用字符串将Google文档排序到Google云端硬盘文件夹中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据文件和文件夹名称中的常用字符串将Google文档排序到Google云端硬盘文件夹中相关的知识,希望对你有一定的参考价值。
我有数百个Google文档和许多Google文件夹。它们在文件名中共享一个公共字符串。文档需要进入相应的文件夹,我想用一些脚本自动执行此操作。
我想做的是如下:
我有数百个Google文档,它们遵循文件名中的类似模式:
SURNAME, Forename_userID_fileName
所以,例如,
DOE, Jane_jd5678_Document3
PUBLIC, Tom_tp9123_reportTPS
SMITH, John_js1234_finaldocument
等等等等。
我在Google Team Drive中也有相应的文件夹,设置如下:
SURNAME, Forename (userCode) (userID) - userType
所以,例如,
DOE, Jane (145374578) (jd5678) - AET Full Time
PUBLIC, Tom (673468714) (tp9123) - NR Full Time
SMITH, John (874512456) (js1234) - AET Part Time
文件和文件夹名称之间的公共字符串是userID字符串。
目前我下载了所有文档,然后上传拖放到每个相应的文件夹中。需要很长时间!我希望有一些应用程序脚本可以自动完成,但我真的不知道从哪里开始。任何人有任何指针?
This StackOverflow question似乎想要做我想做的事情,但由于我是Apps Script的初学者,我无法真正破译解决方案。
这是使用基本Google Apps脚本DriveApp
指向正确方向的基本示例(与高级脚本服务版本或其他Google Drive API方法相对)。我想到的主要问题是如果此示例需要很长时间才能完成,脚本超时。如果发生这种情况,您将需要一个更复杂的解决方案。你也可以通过让idRegex
工作,例如,姓氏A-D然后是E-G等来使其大块化。示例正则表达式可以匹配你用下划线的随机文件;如果这是一个问题,你可能想找到一个更复杂的正则表达式。
function organizeFilesById() {
var idRegex = /_[A-z]+[0-9]+_/;
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
var id = idRegex.exec(filename);
if (! id) {
continue;
} else {
id = id[0];
}
var query = "title contains '" + id + "'";
var folders = DriveApp.searchFolders(query);
if (folders.hasNext()) {
var folder = folders.next();
Logger.log("Will add %s to %s", filename, folder.getName());
//folder.addFile(file); // uncomment line to actually do it
} else {
Logger.log("No folder found for %s", filename);
// could create folder or just report "folder not found"
}
}
}
以上是关于根据文件和文件夹名称中的常用字符串将Google文档排序到Google云端硬盘文件夹中的主要内容,如果未能解决你的问题,请参考以下文章
用于将 google drive 中的文件名列表与 google sheet 列中的名称列表进行比较的 Apps 脚本,以将新文件从驱动器添加到工作表
根据文件名将 Google Cloud 存储桶中的多个文件复制到不同的目录
如果Google Drive文件夹中已经存在相同名称的文件,则附加代码以覆盖PDF