google-apps-script - 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 脚本不允许运行全局代码,因为需要声明和运行特定函数,至少与本地运行代码不同。全局变量是静态的,不能在运行时更改。
你可以做的事情:
正如 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
}
推荐阅读
- regex - 正则表达式的行首错误 486 但行尾有效?
- android - Android OpenGL 2.0 Low FPS 如何解决?
- sql - 通过使用另一个表中的计数进行初始化来更改表
- python - 继续获取:找不到“password_reset_confirm”的反向。'password_reset_confirm' 不是有效的视图函数或模式名称
- web - 无法在所有浏览器上访问所有谷歌相关网站,例如 google.com、YouTube、gmail 等,但所有其他网站都可以
- redux - 如何使用自定义中间件进行异步操作
- elasticsearch - 过滤对象数组上的不同字段
- flutter - Flutter Provider,在哪里放置函数调用以从 firestore 数据库加载数据
- r-markdown - !LaTeX 错误:包 fontspec 的选项冲突
- c++ - 从客户端接收到第一个数据包后,C ++ UDP Socket无法从服务器发送回客户端