我有一个脚本,它首先向用户呈现一个只包含一个按钮的 UI。单击该按钮后,脚本将浏览他们的文档并更改某些文件的所有权。
加载我的脚本后,用户会看到带有红色边框的标准“需要授权”页面。用户单击按钮授予我的应用所需的权限,并被带到带有按钮的页面。
但是,单击按钮后,用户会看到一个对话框,上面写着:
遇到错误:需要授权才能执行该操作。
该应用程序设置为在用户执行脚本时执行,并且脚本访问权限设置为“任何人”。
有什么想法可能是错的吗?
我的 doGet():
function doGet(e) {
var app = UiApp.createApplication();
var button = app.createButton('Transfer');
app.add(button);
var handler = app.createServerHandler('init');
button.addClickHandler(handler);
return app;
}
init() 方法遍历特定文件夹(由其在脚本中的 ID 静态设置),查找当前用户拥有的文件,并将所有权转移给另一个用户。
function init() {
// Create new log as a a Drive document
var log = DocsList.createFile("Ownership Transfer Log");
var user = Session.getActiveUser();
var targetEmail = "newemail@example.com";
transferFolderOwnership('[Drive folder ID]', user.getEmail(), targetEmail, log);
}
并转移文件夹所有权:
function transferFolderOwnership(folderId, userEmail, targetEmail, log) {
var rootFolder = DocsList.getFolderById(folderId);
var files = rootFolder.getFiles();
// Transfer files
var file;
for (var i = 0; i < files.length; i++) {
file = DriveApp.getFileById(files[i].getId());
if (file.getOwner() == userEmail) {
file.transferOwnership(targetEmail);
}
}
// Do the same for folders
}