我在尝试从文件中删除活动用户编辑器时遇到问题。 当我尝试以下代码时,它可以正常工作:
function testOwner() {
var theFile = DriveApp.createFile('New Text File', 'Hello, world!');
theFile.setOwner('anemail@mydomain.fr');
theFile.removeEditor(Session.getActiveUser().getEmail());
}
但是当我使用'makeCopy'方法时,我收到一条消息错误,即使编辑器已被删除也会停止脚本。这是代码:
function testOwner2() {
var template = DriveApp.getFileById(TEMPLATE_ID);
var theFile = template.makeCopy('Name');
theFile.setOwner('anemail@mydomain.fr');
theFile.removeEditor(Session.getActiveUser().getEmail());
}
removeEditor行上的错误消息:'Impossible de trouver l'élémentinsentantàcetidentifiant。 Vousn'êtespeut-êtrepasautoriséàyaccéder。'意思是'找不到与此ID匹配的任何元素。也许您无权访问它
我没有发现任何问题。这是一个众所周知的问题吗?
感谢您的帮助!
答案 0 :(得分:0)
当你.makeCopy()
时,所有编辑都会被移除以获取新文件。
除了帮助调试之外,还可以使用Logger并查看日志......
function testOwner2() {
var template = DriveApp.getFileById(TEMPLATE_ID);
var theFile = template.makeCopy('Name');
theFile.setOwner('anemail@mydomain.fr');
var editors = theFile.getEditors();
for ( var i in editors ) { Logger.log(editors[i].getEmail()); }
Logger.log(Session.getActiveUser().getEmail());
theFile.removeEditor(Session.getActiveUser().getEmail());
}
请尝试使用.getEffectiveUser()
代替.getActiveUser()
,因为这通常也会导致意外结果。
答案 1 :(得分:0)
这被视为评论,只是比常规评论更多。
在另一个答案中建议的代码似乎存在问题:您不能将自己删除为编辑器(当您将所有权设置为其他用户时,您将自动成为编辑器)已复制文件的所有者...您将收到相同的错误消息。
你给出的第一个创建文件的代码片段应遵循相同的逻辑,但是 - 正如我今天所了解的那样(感谢) - 它没有,我真的不知道为什么。
(我希望有人"更好地了解情况"会解释......)
我想唯一的解决方案(至少我可以想象使用脚本)如果你不想成为副本的编辑器,那就是在你的模板中集成一个小脚本(将被复制到副本)创建一个菜单,允许新用户调用一个将您作为编辑器删除的功能。
或者更简单地说,从Drive Ui本身解释如何做到这一点; - )