আমি একটি গুগল অ্যাপস স্ক্রিপ্টস ওয়েব অ্যাপ তৈরি করেছি যা আপনি যা চান তার কাছাকাছি হওয়া উচিত।
গুরুত্বপূর্ণ! আপনার যে কোনও ফোল্ডারে এটি চালানোর আগে নিশ্চিত হয়ে নিন যে আপনি এটি অন্য অ্যাকাউন্টে পরীক্ষা করেছেন। যদিও স্ক্রিপ্টটি ইচ্ছাকৃতভাবে কাজ করছে বলে মনে হচ্ছে, আমি কোনও গ্যারান্টি দিতে পারি না যে এটি আপনার অনুমতিগুলিকে গোলমাল করবে না। সুতরাং স্ক্রিপ্টটি সাবধানতার সাথে যান, গুগল অ্যাপস স্ক্রিপ্টগুলির জন্য ডকুমেন্টেশনগুলি পরীক্ষা করুন এবং কোনও উত্পাদন ডেটা চালানোর আগে এটি ভালভাবে পরীক্ষা করুন।
স্ক্রিপ্টের ইউআই খুব প্রারম্ভিক, তাই অভিনব কিছু বাদ দিবেন না।
var selectedFolder;
var dialog;
function doGet() {
var app = UiApp.createApplication();
var heading = app.createHTML("<h1>Folders for</h1>");
app.add(heading);
var allFoldersIterator = DriveApp.getFolders();
var text = app.createTextArea().setName("text").setId("output");
app.add(text);
var tree = app.createTree();
var rootFolder = DriveApp.getRootFolder();
var treeRoot = app.createTreeItem(rootFolder.getName()).setId(rootFolder.getId());
var handler = app.createServerHandler("folderSelected");
tree.addItem(treeRoot);
tree.addSelectionHandler(handler);
treeRoot.setState(true);
createBranch(rootFolder, treeRoot, app);
app.add(tree);
var selectedFolderIdBox = app.createTextBox().setName("selectedFolderIdBox").setId("selectedFolderIdBox");
app.add(selectedFolderIdBox);
return app;
}
function createBranch(folder, branch, app) {
var children = folder.getFolders();
while (children.hasNext()) {
child = children.next();
Logger.log("Folder id: " + child.getId());
var subBranch = app.createTreeItem(child.getName()).setId(child.getId());
branch.addItem(subBranch);
createBranch(child, subBranch, app);
}
}
function folderSelected(eventInfo) {
var app = UiApp.getActiveApplication();
var parameter = eventInfo.parameter;
Logger.log("Selected " + eventInfo.parameter.selected);
selectedFolder = DriveApp.getFolderById(eventInfo.parameter.selected);
var selectedFolderIdBox = app.getElementById("selectedFolderIdBox");
selectedFolderIdBox.setValue(eventInfo.parameter.selected);
var okHandler = app.createServerHandler("okResetPermissions");
okHandler.addCallbackElement(selectedFolderIdBox);
dialog = app.createDialogBox(true, true);
var panel = app.createFlowPanel();
dialog.add(panel);
dialog.setId("confirmationDialog");
dialog.setPopupPosition(100, 100).setSize(500, 500);
panel.add(app.createLabel("Do you want to reset permissions for all files found in folder " + selectedFolder.getName() + " and its subfolders?\n (Click outside of the dialog box to cancel)"));
panel.add(app.createButton("Do it!", okHandler));
dialog.show();
return app;
}
function okResetPermissions(eventInfo) {
var selectedFolderId = eventInfo.parameter.selectedFolderIdBox;
var selectedFolder = DriveApp.getFolderById(selectedFolderId);
Logger.log("Resetting permissions on " + selectedFolder.getName());
var app = UiApp.getActiveApplication();
app.getElementById("confirmationDialog").hide();
Logger.log("Confirmation dialog hidden");
var progressIndicator = app.createDialogBox(false, true);
progressIndicator.setId("progressIndicator");
progressIndicator.setPopupPosition(100, 100).setSize(500, 500);
var label = app.createLabel("Working ...");
progressIndicator.add(label);
progressIndicator.show();
doResetPermissions(selectedFolder, function() {
var app = UiApp.getActiveApplication();
var progressIndicator = app.getElementById("progressIndicator");
progressIndicator.hide();
return app;
});
return app;
}
function doResetPermissions(selectedFolder, callback) {
Logger.log("Resetting permissions on folder " + selectedFolder.getName());
var sharingAccess = selectedFolder.getSharingAccess();
var sharingPermission = selectedFolder.getSharingPermission();
var files = selectedFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
Logger.log(" Resetting permissions on file " + file.getName());
file.setSharing(sharingAccess, sharingPermission);
var viewers = file.getViewers();
for (var i = 0; i < viewers.length; i++) {
Logger.log(" Removing viewer " + viewers[i].getEmail());
file.removeViewer(viewers[i]);
}
var editors = file.getEditors();
for (var i = 0; i < editors.length; i++) {
Logger.log(" Removing editor " + editors[i].getEmail());
file.removeEditor(editors[i]);
}
}
var children = selectedFolder.getFolders();
while (children.hasNext()) {
var child = children.next();
doResetPermissions(child);
}
if (callback) {
callback();
}
}
এই স্ক্রিপ্টটি ইনস্টল করতে আপনার Google ড্রাইভে যান এবং নতুন New গুগল অ্যাপস স্ক্রিপ্টটি ক্লিক করুন । কোডে আটকান এবং প্রকাশ করুন web ওয়েব-অ্যাপ্লিকেশন হিসাবে বিতরণ করুন । লগ-ইন করা ব্যবহারকারী হিসাবে
স্ক্রিপ্টটি চালানোর জন্য সেট করুন (বা অনুরূপ, আমার গুগল ড্রাইভ ইংরেজিতে নেই) ।
অ্যাপ্লিকেশনটি চালিত করার সময়, আপনাকে আপনার Google ড্রাইভের ফোল্ডার স্তরক্রম দেখানো হবে। কোনও ফোল্ডারে ক্লিক করা একটি কুরুচিপূর্ণ পপআপ প্রদর্শন করবে, যেখানে আপনি ফোল্ডার এবং এর সাবফোল্ডার (কোডটিতে ফাংশন ) এর জন্য একটি অনুমতি পুনরায় সেট করার স্ক্রিপ্ট কার্যকর করতে বেছে নিতে পারেন doResetPermissions
।
এই ফাংশনটি ফোল্ডার এবং এর সাবফোল্ডারগুলির মাধ্যমে পুনরাবৃত্তি করে। এটি খুঁজে পাওয়া প্রতিটি ফাইলের জন্য, এটি file.setSharing
প্যারেন্ট ফোল্ডার থেকে মানগুলি প্রয়োগ করে । এটি file.removeViewer
নিবন্ধিত সমস্ত দর্শকদের এবং file.removeEditor
সমস্ত নিবন্ধিত সম্পাদকদের জন্যও আহ্বান জানায় ।
অপসারণদর্শনকারীর জন্য ডকুমেন্টেশন চেক করুন এবং মুছে ফেলার জন্য আপনি যেটা চান তা নিশ্চিত করার জন্য এডিটর ।
নোট করুন যে স্ক্রিপ্টটি কার্যকর করতে কিছু সময় লাগতে পারে (আপনার ফোল্ডারের কাঠামোর আকারের উপর নির্ভর করে) এবং স্ক্রিপ্ট রানার লগগুলি ( দেখুন → লগগুলি ) বাদে কাজ করার সময় কোনও প্রতিক্রিয়া দেওয়া হবে না ।