1

是否有可能通过javascript获得谷歌电子表格中的用户和权限列表?Google电子表格 - 通过脚本获取共享权限

我在共享谷歌驱动器上有几个电子表格,我想检查,如何通过脚本设置共享权限。我与其他20多个用户共享这些电子表格,因此很难手动检查每个电子表格。

可能吗?

是否有可能在整个谷歌驱动器上运行一些脚本?例如,如果我想获得共享权限列表中的所有谷歌spredsheets和文件夹的驱动器列表,我可以在谷歌驱动器上写一些JavaScript?

非常感谢您

回答

1

免责声明 - 这是我第一次的Goolge Apps的剧本,所以我不是100%肯定这是你想要的。

我用DocsList API列出owner,则editors和在给定的谷歌云端硬盘文件夹每spreadsheetviewers

function start() { 
    var folder = DocsList.getFolderById("...put folder ID here..."), 
     files = folder.getFilesByType(DocsList.FileType.SPREADSHEET), file = null, spreadsheet = null, 
     owner = null, editors = null, editor = null, viewers = null, viewer = null, 
     i = 0, j = 0; 

    for (i = 0; i < files.length; i += 1) { 
    file = files[i]; 
    Logger.log("===== Spreadsheet " + (i + 1) + "/" + files.length + ": " + file.getName() + " ====="); 
    spreadsheet = SpreadsheetApp.openById(file.getId()); 
    owner = spreadsheet.getOwner(); 
    Logger.log("- Owner: " + owner.getEmail()); 
    editors = spreadsheet.getEditors(); 
    for (j = 0; j < editors.length; j += 1) { 
     editor = editors[j]; 
     Logger.log("- Editor " + (j + 1) + "/" + editors.length + ": " + editor.getEmail()); 
    } 
    viewers = spreadsheet.getViewers(); 
    for (j = 0; j < viewers.length; j += 1) { 
     viewer = viewers[j]; 
     Logger.log("- Viewer " + (j + 1) + "/" + viewers.length + ": " + viewer.getEmail()); 
    } 
    } 
} 

注意观众的列表中包含评论者过,这两个这些API不会分离组。我测试了这个代码,它适用于我。你可以很容易地推广到iterate over every folder

+0

谢谢,但如果我有除Spreadsheet以外的文件夹文件,它会引发错误。是否有可能跳过这些文件? – 2014-10-01 13:05:12

+0

在我测试此代码的文件夹中,我有其他类型的文件,我没有得到任何错误。你会得到什么错误信息? 'getFilesByType(DocsList.FileType.SPREADSHEET)'调用应该跳过非电子表格文件。 – kol 2014-10-01 13:24:04

+0

如果Martin无法查看共享权限的文件夹中存在文件,则可能导致错误。您可以在for循环中使用try catch块,并在捕获错误时记录文件名。长期来看,我会建议使用DriveApp而不是DocsList(DocsList较旧,但仍然是实验性的)。 – 2014-10-01 20:38:51

相关问题