创建一个谷歌应用程序脚本,从myDrive读取文件名并将其放在基于文件名的文件夹中

时间:2017-10-05 17:42:51

标签: javascript google-apps-script google-drive-api

我在创建可以读取文件名的应用程序脚本时遇到问题,并从该文件名中将文件从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

2 个答案:

答案 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};
    }
  }