Google apps script 在google team drive中浏览文件

Google apps script 在google team drive中浏览文件,google-apps-script,google-drive-api,google-drive-shared-drive,Google Apps Script,Google Drive Api,Google Drive Shared Drive,我正在尝试编写一个简单的谷歌应用程序脚本来列出谷歌团队驱动器中的文件,但我并没有取得多大成功 代码如下: 函数开始() { Logger.log(“启动应用程序…”); var startingFolders=DriveApp.getFoldersByName(“Temp”); if(startingFolders.hasNext()) { //假设只有一个文件夹具有该名称 accessFiles(startingFolders.next()); } 其他的 Logger.log(“未找到文件夹

我正在尝试编写一个简单的谷歌应用程序脚本来列出谷歌团队驱动器中的文件,但我并没有取得多大成功

代码如下:

函数开始()
{
Logger.log(“启动应用程序…”);
var startingFolders=DriveApp.getFoldersByName(“Temp”);
if(startingFolders.hasNext())
{
//假设只有一个文件夹具有该名称
accessFiles(startingFolders.next());
}
其他的
Logger.log(“未找到文件夹”);
}
函数访问文件(文件夹)
{
Logger.log(“文件夹:%s”,Folder.getName());
//打印一些文件属性
var files=folder.getFiles();
while(files.hasNext())
{
var file=files.next();
Logger.log(“处理文件%s。当前访问:%s.”,file.getName(),file.getSharingAccess());
//这里有些工作。。。
}
//浏览子文件夹
while(folder.hasNext())
{
var subfolder=folder.next();
访问文件(子文件夹);
}
}
问题是日志总是打印“未找到文件夹”消息。“Temp”是团队驱动器中的一个文件夹,我可以完全访问该文件夹。请注意,我试图使用谷歌应用程序脚本,而不是RESTAPI

我不确定我做错了什么,或者团队驱动是否还不受支持


任何帮助都将不胜感激!谢谢。

使用谷歌应用脚本服务(DriveApp)无法搜索团队硬盘上的文件和文件夹,但我们可以使用硬盘高级服务,但首先我们应该先启用它。说明在屏幕上

下面的脚本将根据指定团队驱动器的id列出名为Temp的文件夹中的所有文件

function listFiles(){
  var teamDriveId = 'put_here_the_teamdrive_id';
  var pageToken;
  var folders = Drive.Files.list({  
    corpora: 'teamDrive',
    supportsTeamDrives: true,
    teamDriveId: teamDriveId,
    includeTeamDriveItems: true,
    q: 'title = "Temp"'
  });
  if(folders.items.length !== 1) {
    Logger.log('There is a problem.');
    return;
  }
  var query = 'trashed = false and ' + //to exclude trashed files
      'not mimeType = "application/vnd.google-apps.folder"'; // To exclude folders
  var files, pageToken;
  do {
    files = Drive.Files.list({
      q: query,
      maxResults: 100,
      pageToken: pageToken,
      // required for team drive queries
      corpora: 'teamDrive',
      supportsTeamDrives: true,
      teamDriveId: teamDriveId,
      includeTeamDriveItems: true
    });
    if (files.items && files.items.length > 0) {
      for (var i = 0; i < files.items.length; i++) {
        var file = files.items[i];
        Logger.log('%s (ID: %s)', file.title, file.id);
      }
    } else {
      Logger.log('No files found.');
    }
    pageToken = files.nextPageToken;
  } while (pageToken);
}
函数列表文件(){
var teamDriveId='put_here_the_teamdrive_id';
var pageToken;
var folders=Drive.Files.list({
语料库:“teamDrive”,
是的,
teamDriveId:teamDriveId,
includeTeamDriveItems:true,
q:'title=“Temp”'
});
如果(folders.items.length!==1){
Logger.log('有问题');
返回;
}
var query='trashed=false和'+//以排除垃圾文件
'not mimeType=“application/vnd.google apps.folder”;//排除文件夹
var文件,pageToken;
做{
files=Drive.files.list({
问:质疑,,
最大结果:100,
pageToken:pageToken,
//团队驱动查询需要
语料库:“teamDrive”,
是的,
teamDriveId:teamDriveId,
includeTeamDriveItems:true
});
如果(files.items&&files.items.length>0){
对于(var i=0;i
我不记得有人提到过它受到支持。另一个选项是可以支持它,但来自用户驱动器的脚本无法到达团队驱动器。您的脚本是否位于同一团队驱动中?非常感谢@Rubén,这正是我想要做的!使用这种类似sql的查询,不再需要递归搜索!