【问题标题】:Google Spreadsheet -- get sharing permissions by script谷歌电子表格——通过脚本获取共享权限
【发布时间】:2014-11-26 00:19:09
【问题描述】:

是否可以通过 javascript 从 google 电子表格中获取用户和权限列表?

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

有可能吗?

是否可以在整个谷歌驱动器上运行一些脚本?例如,如果我想获取具有共享权限列表的驱动器上所有谷歌电子表格和文件夹的列表,我可以在谷歌驱动器上方编写一些 javascript 吗?

非常感谢

【问题讨论】:

    标签: javascript google-apps-script permissions google-sheets google-drive-api


    【解决方案1】:

    免责声明 - 这是我的第一个 Goolge Apps 脚本,所以我不能 100% 确定这是您想要的。

    我使用DocsList API 列出了给定 Google Drive 文件夹中每个spreadsheetownereditorsviewers

    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

    【讨论】:

    • 谢谢,但如果我在电子表格以外的文件夹中有文件,则会引发错误。是否可以跳过这些文件??
    • 在我测试此代码的文件夹中,我有其他类型的文件,我没有收到任何错误。你得到什么错误信息? getFilesByType(DocsList.FileType.SPREADSHEET) 调用应该跳过非电子表格文件。
    • 如果文件夹中存在Martin无权查看共享权限的文件,可能会导致该错误。您可以在 for 循环中使用 try catch 块,并在捕获错误时记录文件名。从长远来看,我建议使用 DriveApp 而不是 DocsList(DocsList 较旧,但仍处于试验阶段)。
    • 您应该用 DriveApp 或 Drive API 替换 DocsList,因为这个日落公告:developers.google.com/google-apps/documents-list/terms
    猜你喜欢
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多