我在创建可以读取文件名的应用程序脚本时遇到问题,并从该文件名中将文件从myDrive移动到指定的文件夹。最后,我想创建一个应用程序来读取PR_P50_MP26_OtherContent.pdf的命名约定,并将该文件放入MP26文件夹中,该文件夹位于P50文件夹中的PR文件夹中。当我运行脚本时,它将我的文件发送到错误的文件夹。
目标:将“PR_P50_MP286_LineLowering_2006_463.pdf”文件移动到P50文件夹下的PR文件夹中。
当我运行代码时会发生什么,它会转到else语句中的test文件夹。
$ grep -Pozi '\b[bcdfghjklmnpqrstvwxyz]\w*[aeiou]\b| |\n' file \
| sed -E -e 's/\x0//g' -e 's/ +/ /g' -e 's/^ //' -e 's/ $//'
hello whatsi
hope worksa
ho
答案 0 :(得分:0)
代码存在很多问题,但您提到的一个错误可以通过替换
来解决var packagedFile = file.getname()
与
var packagedFile = file.getName()
答案 1 :(得分:0)
您正在使用getFolderbyId
正在查找给定ID的文件夹。尝试获取应该是url一部分的文件夹的ID。您还应该在while
循环之外声明文件夹变量。
https://drive.google.com/drive/folders/FOLDERIDHERE
这至少可以将文件放在正确的文件夹中。如果您希望按文件夹名称进行操作,则必须调用getFolderByName("PR folder of p50 folder")
,这将返回fileIterator,因此您必须循环访问它,但如果您知道只有一个具有该名称的文件夹,您将能够将文件夹设置为var folder = folders.next()
。无论您选择哪种方式,您现在都应该能够将文件放入所需的文件夹中。
function MoveFiles(){
var files = DriveApp.getRootFolder().getFiles();
var 1stdestination = DriveApp.getFolderById("FOLDERIDHERE");
var 2nddestination = DriveApp.getFolderById("FOLDERIDHERE");
while (files.hasNext()) {
var file = files.next();
var packagedFile = file.getName();
if (packagedFile.indexOf("PR_P50"))
{
destination.addFile(file);
var pull = DriveApp.getRootFolder();
pull.removeFile(file);
}
else{
destination.addFile(file);
var pull = DriveApp.getRootFolder();
pull.removeFile(file);
}
}
}
我在这里做了类似的事情
var JobFolder = DriveApp.getFolderById('MYFOLDERIDHERE');
//Other stuff here
if(!results.isBeforeFirst() ){
throw new Error('Job does not exist');
} else {
if(jobId in JobFolder.getFilesByName(jobId) )
{
var ss = SpreadsheetApp.open(jobId);
var url = ss.getUrl();
return {url:url, jobId:jobId};
} else
{
var ss = SpreadsheetApp.create(jobId);
ss.insertSheet('Job Materials');
ss.insertSheet('Job Operations');
ss.insertSheet('Job Notes');
ss.insertSheet('Employees Clocked On');
var temp = DriveApp.getFileById(ss.getId());
JobFolder.addFile(temp);
var url = ss.getUrl();
return {url:url, jobId:jobId};
}
}