2014-11-20 61 views
1

我正在嘗試編寫一個腳本,該腳本將返回與活動用戶共享的每個文件的名稱。但是,我遇到了.getAccess()方法的問題。有沒有辦法從腳本中排除未與用戶明確共享的文件? (又名與鏈接域中的所有人共享的文件)

編輯:

所以我一直在擺弄的代碼一點,事實證明,該代碼被放在用「在誰擁有該鏈接的域名所有人」共享文件打破。所以現在的問題是避免與每個人共享的文件,但仍然在用戶的驅動器中彈出而沒有明確地與他們共享。

有沒有辦法說:

if (file.getAccess(user) == "VIEW" && file is explicitly shared with user) 

or 

&& file is not "Shared with everyone in the domain with the link" 

老問題: 當我使用它是從一個特定ID訪問的文件,它完美的作品。 例如:

var id = "1HoJbszb1uLF1RZpU_IPv3O648pIeYs4IWK2kbbQ4IaA"; 
var file = DriveApp.getFileById(x); 

Logger.log(file.getAccess(user)); 

登錄:

EDIT 

但是,如果我試圖通過在用戶的驅動器的每個文件進行迭代,我會得到一個錯誤「與指定ID的項目可能被發現,或者你沒有權限訪問它「。

我已經試過了這兩種方式:

while (files.hasNext()){ 
    var raw = files.next(); 
    var id = raw.getId(); 
    var file = DriveApp.getFileById(id); 
    if (file.getAccess(user) == "EDIT") Logger.log(file.getAccess(user)); 
    } 

和:

while (files.hasNext()){ 
    var file = files.next(); 
    if (file.getAccess(user) == "EDIT") Logger.log(file.getAccess(user)); 
    } 

我得到同樣的錯誤試圖左右逢源。我甚至檢查過以確保.hasNext()方法正在工作,並且確保當我要求日誌只列出每個文件的名稱時,只要.getAccess()永遠不會被調用(因此不會如果聲明)。

while (files.hasNext()){ 
    var file = files.next(); 
    Logger.log(file.getName()); 
} 

有什麼想法是怎麼回事?

回答

4

這裏的問題是getAccess()方法 - 同樣適用於getSharingAccess()getSharingPermissions()方法 - 僅適用於文件所有者和顯式編輯器。不與共享的文件可以直接與用戶編輯權限引發您看到的錯誤。

有幾種變通辦法可用,但:

  1. 如果你只需要獲得有關用戶明確共享文件「可以編輯」權限:

    檢查getEditors().length對於文件 - 如果用戶 沒有明確的「可編輯」權限,則該值爲0;如果用戶可編輯 ,則該值爲0文件中。

    var f = DriveApp.getFileById(fileId); 
    if (f.getEditors().length) { 
        // this file has been explicitly shared with the user with "Can edit" permission 
    } 
    
  2. 如果你需要得到用戶具有文件「可以編輯」許可,無論這些文件是與用戶或 沒有明確共享:

    首先,啓用在您的腳本的高級Google服務 (位於菜單資源下)中,在Google Developers Console - more details on enabling advanced services can be found here中駕駛API。 之後,您可以通過 檢查用戶的許可文件檢查File.userPermission.role屬性:

    var f = Drive.Files.get(fileId); // requires Drive API in Advanced Google services 
    var up = f.userPermission; 
    if (up.role=='writer') { 
        // 'writer' = user has Edit permission to the file 
    } 
    

    File.userPermission.role作家的文件用戶 「可以編輯」權限,無論怎樣文件與 用戶共享(顯式地,通過組/域成員或公共文件)。其他可能的值是讀者(用戶「可以查看」「可以評論」權限文件)和所有者(用戶是文件的所有者/創建者)。 More info on userPermission property here

相關問題