我创建了这个脚本:
function listAllFiles() {
var MyAccount = Session.getActiveUser().getEmail();
var files = DriveApp.getFiles();
var files = DriveApp.searchFiles('"' + MyAccount + '" in owners');
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
}
}
如何扩展我的过滤器,以便取回属于我的且已共享的所有文件/目录?
谁能给我一个简短的例子?
谢谢
function listAllFiles() {
var MyAccount = Session.getActiveUser().getEmail();
var files = DriveApp.getFiles();
var files = DriveApp.searchFiles('"' + MyAccount + '" in owners');
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
}
}
现阶段似乎还没有直接搜索自己拥有的共享文件的查询。 Ref 所以,在这种情况下,需要修改脚本。在你的展示脚本中,做如下修改怎么样?
在此修改中,使用了Drive服务(DriveApp)。
function listAllFiles() {
var MyAccount = Session.getActiveUser().getEmail();
var files = DriveApp.getFiles();
var files = DriveApp.searchFiles('"' + MyAccount + '" in owners');
while (files.hasNext()) {
var file = files.next();
if (file.getSharingAccess() != DriveApp.Access.PRIVATE || file.getEditors().length > 0 || file.getViewers().length > 0) {
Logger.log(file.getName());
}
}
}
作为另一种方法,在本次修改中,使用了 Drive API v3。因此,请在高级 Google 服务中启用 Drive API v3。
function listAllFiles2() {
var MyAccount = Session.getActiveUser().getEmail();
let fileList = [];
let pageToken;
do {
const obj = Drive.Files.list({ q: `'${MyAccount}' in owners and mimeType != 'application/vnd.google-apps.folder' and trashed=false`, pageToken, pageSize: 1000, fields: "nextPageToken,files(id,name,shared)" });
if (obj.files.length > 0) {
fileList = [...fileList, ...obj.files.filter(({ shared }) => shared && shared === true)];
}
pageToken = obj.nextPageToken;
} while (pageToken);
const fileNames = fileList.map(({name}) => name);
console.log(fileNames)
}