2012-07-28 104 views
0

我正在研究一个非常简单的脚本,它将更新文档的查看器。在我的Google Apps网域中,默认的共享权限已更改。我的管理员想要返回并更改所有现有文档的共享设置。在开展我的POC工作时,我遇到了一个错误,并想知道是否应该采用另一种GAS。从Google Drive中的文件中删除默认域查看器

问题是,由于“无效的电子邮件”错误,我无法将域用户作为文档查看器移除。

的消息是:Exception: Invalid email: MyDomain.com

预先感谢您的任何援助。

[我已删除记录和错误从下面的代码捕获。]

function removeDomainUser() 
{ 
    DocsList.getAllFiles().forEach(
    function (file,i ,array) 
    { 

     //--Always pick the Domain Viewer--// 

     var toRemove = -1; 
     file.getViewers().forEach(
      function(user,i) 
      { 
      toRemove = user.getEmail() == "MyDomain.com" ? i : toRemove; 
      } 
     ); 

     //--If there is a Domain viewer, remove it--// 

     toRemove > -1 ? file.removeViewer(file.getViewers()[toRemove]) : ''; 
    } 
); 
} 

回答

0

不幸的是,这是不可能使用DocsList服务。有一个open feature request添加此功能。您应该可以通过使用UrlFetchApp调用Documents List API来完成此操作。

+0

谢谢。我将不得不使用API​​来进行这种复古适配(我希望能够确保自己没有做错什么)。 – fooby 2012-07-31 12:46:38

0

我没有在你的代码想通了错误,但我已经能够与下面的代码位,以达到同样的目标

function removeDomainUser(user){ 
    //User is your domain user 
    // e.g user = [email protected] 
    var files = DocsList.getAllFiles(); 
    for(var i in files){ 
    var viewvers = files[i].getViewers(); 
    for(var j in viewvers){ 
     if(viewvers[j] == user) files[i].removeViewer(user); 
    } 
    } 
} 
+0

我的代码的功能没有错误。如果我抓住诸如“[email protected]”的用户,那么该用户将被删除。在功能上,你的代码和我的一样。 我遇到的问题是将默认查看器设置为通过将应用程序共享默认设置为: **此组织** 此组织中的人员可以查找和访问。 希望这有助于: 'DocsList.getAllFiles()[0] .getViewers()[0] .getEmail()'返回: “MyDomain.com” 但是, 'VAR userToRemove = DocsList.getAllFiles()[0 ] .getViewers()[0];' 'DocsList.getAllFiles()[0] .removeViewer(userToRemove)'在我的问题中抛出错误。 – fooby 2012-07-30 14:49:04

相关问题