gpt4 book ai didi

google-apps-script - Google Apps 脚本 TeamDrive DriveApp.searchFolders 和 DriveApp.searchFiles 不返回任何结果

转载 作者:行者123 更新时间:2023-12-02 03:24:42 25 4
gpt4 key购买 nike

我有一些 Google Apps 脚本代码,用于搜索 TeamDrive 上的文件和文件夹。

我遇到的问题是,如果文件或文件夹是由我的同事创建的,当我运行脚本时,它找不到该文件。如果我创建一个文件,而我的同事运行该脚本,则即使我们都有权查看、编辑并查看云端硬盘中的文件和文件夹,该脚本也找不到该文件。如果我们中的一个人编辑了另一个人创建的文件,那么该文件就会从搜索中可见。

在进行一些 Android 开发时,我遇到了与 Drive REST api 类似的问题。在Android中,当调用files().list()时,我花了一段时间才发现我必须设置以下内容才能每次搜索成功。

  1. .setSupportsTeamDrives(true)
  2. .setIncludeTeamDriveItems(true)
  3. .setCorpora("teamDrive")
  4. .setTeamDriveId(myFolder.getTeamDriveId())

我假设我的应用程序脚本代码遇到了同样的问题。

//Create the N Google docs files
function CreateNFiles(){
var spreadsheet = SpreadsheetApp.getActive();
var Nmain = spreadsheet.getSheetByName("Nmain")
var spreadsheetId = spreadsheet.getId();
var pdfDir = "Form Data";
var TemplatesFolder = null;

//Check and see if there is a 'Form Data' folder
var NFolderId = null;
var RFolderId = DriveApp.getFileById(spreadsheetId).getParents().next().getId();
var files = DriveApp.searchFolders('parents="'+RFolderId+'" and trashed=false');
while (files.hasNext()) {
var myfile = files.next();
if(myfile.getName() == pdfDir){
NOFolderId = myfile.getId();
}
}

https://developers.google.com/apps-script/reference/drive/drive-app#searchFiles(String)

这表示引用

https://developers.google.com/drive/api/v3/search-parameters#examples_for_teamdriveslist

所以我可能会使用

corpora="teamDrive"

有办法设置SupportsTeamDrives吗?并设置包含TeamDriveItems?并设置TeamDriveId?在 Google Apps 脚本中

最佳答案

在团队云端硬盘中查找文件和文件夹

这是我根据自己的需要一直在开发的几个功能。它们仍在进行中,但一个可以在团队驱动器文件夹中归档文件夹,另一个可以在团队驱动器文件夹中查找项目。 Logger.log 设置为显示项目编号、标题、id 和 mimeType。

此命令查找项目(文件或文件夹)。您可以通过类型来区分它们。

function findItemsInTeamDriveFolder(teamDriveId,folderId){
var teamDriveId=teamDriveId || '0AFN5OZjg48ZvUk9PVA';
var folderId=folderId || '1LK76CVE71fLputdFAN-zuL-HdRFDWBGv';
var options={
"corpora":"teamDrive",
"includeTeamDriveItems":true,
"orderBy":"folder",
"q":Utilities.formatString('\'%s\' in parents',folderId),
"supportsTeamDrives":true,
"teamDriveId":teamDriveId
};
var files=Drive.Files.list(options);
var data=JSON.parse(files);
for(var i=0;i<data.items.length;i++){
Logger.log('\nItem: %s - Title: %s - Id: %s - Type:%s - Trashed: %s\n',i+1,data.items[i].title,data.items[i].id,data.items[i].mimeType,data.items[i].explicitlyTrashed?'true':'false');
}
}

这只是查找文件夹中的文件夹。它不是可重入的,它是一级交易,但目前这就是我所需要的。

function findFoldersInATeamDriveFolder(teamDriveId,folderId){
var teamDriveId=teamDriveId || '0AAc6_2qyI7C0Uk9PVA';
var folderId=folderId || '1HenWOXTSCg96iAvA0ZkgEA9EGKlch4fz';
var optionalArgs={
"corpora":"teamDrive",
"includeTeamDriveItems":true,
"orderBy":"folder",
"q":Utilities.formatString('\'%s\' in parents and mimeType = \'application/vnd.google-apps.folder\'',folderId),
"supportsTeamDrives":true,
"teamDriveId":teamDriveId
}
var list=Drive.Files.list(optionalArgs)
var data=JSON.parse(list);
for(var i=0;i<data.items.length;i++){
Logger.log('\nItem: %s - Title: %s - Id: %s - Type: %s - Trashed;%s\n',i+1,data.items[i].title,data.items[i].id,data.items[i].mimeType,data.items[i].explicitlyTrashed?'true':'false');
findItemsInTeamDriveFolder(teamDriveId,data.items[i].id)
}
}

我认为它们可能会有所帮助。

关于google-apps-script - Google Apps 脚本 TeamDrive DriveApp.searchFolders 和 DriveApp.searchFiles 不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com