【发布时间】:2020-06-20 16:41:52
【问题描述】:
使用以下应用程序脚本功能,我可以在 google drive 中成功创建文件夹:
function uploadFileToGoogleDrive(data, file, name, email) {
var parentFolderId = "FOLDER_ID";
var parentFolder = DriveApp.getFolderById(parentFolderId);
var subfolder;
try {
subfolder = parentFolder.getFoldersByName([name, email].join(" ")).next();
}
catch(e) {
subfolder = parentFolder.createFolder([name, email].join(" "));
}
var contentType = data.substring(5,data.indexOf(';')),
bytes = Utilities.base64Decode(data.substr(data.indexOf('base64,')+7)),
blob = Utilities.newBlob(bytes, contentType, file),
file = subfolder.createFile(blob);
file = subfolder.createFile(file, data);
Logger.log(subfolder);
return "OK";
}
我想使用以下脚本访问该文件夹:
function downloadFile(e) {
var parentFolderId = "FOLDER_ID";
var parentFolder = DriveApp.getFolderById(parentFolderId);
var subfolderId;
var subfolders = parentFolder.getFoldersByName([name, email].join(" "));
while (subfolders.hasNext()) {
var folder = subfolders.next();
Logger.log(folder.getId());
}
}
appsscript.json 用于 uploadFileToGoogleDrive:
{
"timeZone": "Europe/Bucharest",
"dependencies": {
},
"webapp": {
"access": "ANYONE_ANONYMOUS",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
appsscript.json 用于下载文件:
{
"timeZone": "Europe/Bucharest",
"dependencies": {
},
"webapp": {
"access": "ANYONE_ANONYMOUS",
"executeAs": "USER_DEPLOYING"
},
"exceptionLogging": "STACKDRIVER",
"oauthScopes": ["https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.readonly"],
"runtimeVersion": "V8"
}
脚本可以仅访问使用 google drive Web 创建的文件夹! 但无法获取其他应用脚本创建的文件夹。
请注意,这两个功能(上传和下载)位于不同的谷歌应用脚本中。
【问题讨论】:
-
如果提供了 1.Permissions/scopes 授予每个脚本的问题会更好。 2. 引用准确的错误信息,而不是对错误的任何主观推断
-
感谢 TheMaster agian 的帮助,许可(
https://www.googleapis.com/auth/drive.readonly和https://www.googleapis.com/auth/drive已授予第二个脚本,但当我授予第一个脚本时它停止工作。2. 没有错误,脚本一直在等待日志 -
你能edit这些细节进入你的问题吗? 2.应该在view>stackdriver logs中记录。
-
在堆栈驱动程序日志中:没有可用于此执行的日志。
-
您需要清除顶部的过滤器。您是否正在访问视图>堆栈驱动程序日志记录?不要去查看>执行>日志。 3. 上传的文件也可能需要一些时间才能显示出来。在
while调用之前尝试添加Logger.log(subfolders.hasNext())
标签: google-apps-script google-drive-api