首页 > 解决方案 > Google Apps 脚本返回云端硬盘中的所有文件,而不是文件夹中的文件

问题描述

我在 Google Drive 中有一个文件夹,里面有一些文件。我想检索所有这些文件信息,这就是我想要的。其他文件夹中还有很多其他文件,但我不需要它们。但是,我的以下代码显示了所有文件的名称。如何将结果限制为仅指定文件夹中的文件?

//Folder ID
var myFolderId = "XXXXXXXXXXXXXXXXXXXXXXXXX";
var files = DriveApp.getFolderById(myFolderId).getFiles();
while(files.hasNext())
{
    var file = files.next();
    Logger.log(file.getName());
}

目前,此文件夹中只有 4 个文件,但日志显示了我的 Google Drive 中的整个文件名。我不知道我做错了什么,因为我正在指定带有 ID 的文件夹。为什么它会返回 Google Drive 中的每个文件?

标签: google-apps-script

解决方案


回答:

您的代码已经很好用了!

更多信息:

Google Apps 脚本不允许运行全局代码,因为需要声明和运行特定函数,至少与本地运行代码不同。全局变量是静态的,不能在运行时更改。

你可以做的事情:

正如 Cooper 在他们的评论中提到的那样 - 您需要做的就是将您的代码放入一个函数中,调用该函数,然后您就可以设置了。代码效果很好:

function functionName(){
  var myFolderId = "XXXXXXXXXXXXXXXXXXXXXXXXX";
  var files = DriveApp.getFolderById(myFolderId).getFiles();
  while(files.hasNext())
  { 
    var file = files.next();
    Logger.log(file.getName());
  }
}

作为旁注:如果您真的想使用全局范围(或​​至少。使用它的模拟),PropertiesService可供您使用,尽管您仍然必须在函数中设置它们并运行函数检索它们:

function setVars(){
  PropertiesService.getScriptProperties().setProperty('myFolderId', 'XXXXXXXXXXXXXXXXXXXXXXXXX');
}
function listFiles(){
 var files = DriveApp.getFolderById(PropertiesService.getScriptProperties().getProperty('myFolderId')).getFiles();
 //continue this code
}

推荐阅读