在Google表格中管理Google受保护的单元格

时间:2017-01-12 15:57:14

标签: google-apps-script google-sheets google-api file-permissions

我有一个Google云端硬盘文件夹,里面有30多张Google表格。在每张纸上,我有5个以上的标签,每个标签都有至少一个受保护的单元格或标签本身。我想知道,是否可以将受保护单元格的所有这些权限作为文本提供给一个Google表格,以便能够快速查看并可能管理权限。我的长期目标是直接从Google Sheet中管理受保护的单元格。我一直在寻找,但没有找到任何资源让我走上正轨。

1 个答案:

答案 0 :(得分:1)

我写了这个脚本来完成你想要的任务,

运行您需要打开电子表格的脚本,或者然后停止新的电子表格 转到工具 - >脚本编辑器进行创建,然后复制/粘贴代码。

更改“ ######################### ”作为容器文件夹的ID,以确定您可以打开文件夹的文件夹ID,然后复制与ID对应的URL部分 https://drive.google.com/drive/folders/ #########################

添加菜单后,您需要刷新才能看到它。

使用:点击自定义工具 - >获取permisions列表,然后它将创建“表#”,其中包含所有信息

这是代码:

function onOpen(){
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Utilities').addItem('Get permisions list Here','testfunction').addToUi();
}

function testfunction() {
  //Add a new sheet in the current Spreadsheet
  var activeSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet().activate();
  activeSheet.appendRow(['FileName','ID','Protection Description','Range','Type','Users']);
  activeSheet.getRange("A1:F1").setFontWeight('bold');

  //get all the Google Spreadsheet's files
  var files = DriveApp.getFolderById("#########################").getFilesByType(MimeType.GOOGLE_SHEETS);
  while (files.hasNext()) {
   var file = files.next();
   var ss = SpreadsheetApp.openById(file.getId());

   //get the permisions in the current file, and print the data to the previous created sheet
   var protectionsRange = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
    for (var i = 0; i < protectionsRange.length; i++) {
      var protection = protectionsRange[i];

      activeSheet.appendRow([file.getName(),file.getId(),protection.getDescription(),protection.getRange().getA1Notation(),protection.getProtectionType(),protection.getEditors().join(";")]);
      //Logger.log(file.getName() + " | " + file.getId() + " \n| " + protection.getDescription() + " | " + protection.getRange().getA1Notation() + " | " + protection.getProtectionType() + " | " + protection.getEditors().join(";"));
    }
    var protectionsSheet = ss.getProtections(SpreadsheetApp.ProtectionType.SHEET);
    for (var i = 0; i < protectionsSheet.length; i++) {
      var protection = protectionsSheet[i];
      activeSheet.appendRow([file.getName(),file.getId(),protection.getDescription(),protection.getRange().getA1Notation(),protection.getProtectionType(),protection.getEditors().join(";")]);
      //Logger.log(file.getName() + " | " + file.getId() + " \n| " + protection.getDescription() + " | " + protection.getRange().getA1Notation() + " | " + protection.getProtectionType() + " | " + protection.getEditors().join(";"));
    }
  }
}