试图用一个非常简单的脚本来探索这个问题,但我得到一个权限不足的错误。
function mini(){
var gdriveId = "1hp8ncIG4Ww7FH8wi7HjJzzzzzzz";
var options = {
method: "GET",
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
}
var url = "https://www.googleapis.com/drive/v2/files/"+gdriveId+"/children";
var response = JSON.parse(UrlFetchApp.fetch( url, options).getContentText());
}
我试着在高级google服务下拉菜单中启用v2 drive api,但没有成功。
我相信你的情况和目标如下。
gdriveId
在你的脚本中,我以为你要检索的是在根目录下的 gdriveId
使用 Drive API v2 中的 "Children: list" 方法。对此,这个答案如何?
https://www.googleapis.com/auth/script.external_request
. 脚本编辑器可以自动检测到所需的作用域,但即使只启用Drive API,似乎也没有添加作用域。但是,即使只启用Drive API,似乎也没有添加任何作用域。我想你的问题的原因是这样的。https://www.googleapis.com/auth/drive.readonly
例如,请将 // DriveApp.getFiles()
作为注释行添加到脚本中。当你的脚本被修改后,它就变成了如下的样子。
function mini(){
var gdriveId = "1hp8ncIG4Ww7FH8wi7HjJzzzzzzz";
var options = {
method: "GET",
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
},
}
var url = "https://www.googleapis.com/drive/v2/files/"+gdriveId+"/children";
var response = JSON.parse(UrlFetchApp.fetch( url, options).getContentText());
}
// DriveApp.getFiles() // <--- Added this comment line. By this, the scope of https://www.googleapis.com/auth/drive.readonly is added.
当使用Advanced Google service的方法时,会将Advanced Google service的作用域改为 https://www.googleapis.com/auth/drive
是自动添加的。这样,下面的脚本就可以用了。
function test() {
var gdriveId = "1hp8ncIG4Ww7FH8wi7HjJzzzzzzz";
var res = Drive.Children.list(gdriveId);
console.log(res)
}
从2020年6月1日起,共享驱动器中的文件和文件夹 可以通过驱动器服务进行检索。所以你也可以使用下面的脚本。
function myFunction() {
const getFolderList = (id, folders = []) => {
const f = DriveApp.getFolderById(id);
const fols = f.getFolders();
let temp = [];
while (fols.hasNext()) {
const fol = fols.next();
temp.push({name: fol.getName(), id: fol.getId(), parent: f.getName()});
}
if (temp.length > 0) {
folders.push(temp);
temp.forEach((e) => getFolderList(e.id, folders));
}
return folders.flat();
};
var gdriveId = "###"; // Please set the Drive ID.
const res = getFolderList(gdriveId);
console.log(res);
}
如果你想用ScriptApp.getOAuthToken()给权限写,只需在注释中加入以下代码,在运行时授权即可。如果你不这样做,你将只能下载和浏览。
//DriveApp.addFile("test");
參考網址:https:/00m.inUeeOB