2012-07-28 85 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

相關問題