为什么Google Script的getFolderbyId会毫无错误地接受变量?

时间:2017-08-04 23:04:50

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

这是我的代码,重点是传入一个文件夹ID并让它记录该文件夹中所有出现的给定文件名:

function SearchFiles(SourceID) 
{
  var source = DriveApp.getFolderById(SourceID);
  var searchFor ='title contains "Desired File Name"';
  var names =[];
  var Dates=[];
  var files = source.searchFiles(searchFor);
  while(files.hasNext()) 
  {
    var file = files.next();
    var date = file.getDateCreated();
    Dates.push(date);
    var name = file.getName();
    names.push(name);
  }

  for (var i=0;i<names.length;i++)
  {
    Logger.log(names[i]);
    Logger.log(Dates[i]);
  }
}

SearchFiles("ID Here");

问题是,当运行此代码时,我收到错误&#34;找不到具有给定ID的项目,或者您无权访问它。&#34;尽管确保ID正确并且我拥有正确的权限。但是,如果我将正确的ID直接放入getFolderById函数而不是变量,那么它都能正常工作而不会出错。什么阻止我使用变量?

1 个答案:

答案 0 :(得分:1)

你在运行哪个功能?我猜你在点击运行时正在运行SearchFiles功能。在另一个函数中调用SearchFiles函数并运行该函数,如下所示:

function myFunction() {
  SearchFiles("Folder ID");
}

function SearchFiles(SourceID) 
{
  var source = DriveApp.getFolderById(SourceID);
  var searchFor ='title contains "Desired File Name"';
  var names =[];
  var Dates=[];
  var files = source.searchFiles(searchFor);
  while(files.hasNext()) 
  {
    var file = files.next();
    var date = file.getDateCreated();
    Dates.push(date);
    var name = file.getName();
    names.push(name);
  }

  for (var i=0;i<names.length;i++)
  {
    Logger.log(names[i]);
    Logger.log(Dates[i]);
  }
}

运行myFunction,它应该按预期工作:

enter image description here