У меня есть папка с Google Диском, в которой есть 30 + Google Таблиц. В каждом листе у меня есть 5 + вкладки, и каждая из этих вкладок имеет по крайней мере один защищенный набор ячеек или вкладку. Мне было интересно, возможно ли передать все эти разрешения для защищенных ячеек в один лист Google в виде текста, чтобы иметь возможность быстро просматривать и потенциально управлять разрешениями. Моя долгосрочная цель состоит в том, чтобы управлять защищенными ячейками прямо из одного Листа Google. Я искал, но не нашел никаких ресурсов, чтобы отправить меня по правильному пути.Управление защищенными Google элементами в листе Google
0
A
ответ
1
Я writed этот сценарий делает задачу, которую вы хотите,
для запуска сценария вам нужно открыть таблицу, или Цеат новый, в то Перейти к tool-> редактор скриптов для создания его, затем скопируйте/вставьте код.
Измените «########################» на идентификатор папки вашего контейнера, чтобы определить идентификатор вашей папки вы можете открыть папку затем скопировать 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(";"));
}
}
}