সমস্ত সাবফোল্ডারগুলিতে আমি কীভাবে গুগল ড্রাইভ নথিগুলির জন্য অনুমতিগুলি পুনরায় সেট করব?


14

ঠিক আছে, আমি এর উত্তরটির জন্য সর্বত্র খুঁজে পেয়েছি এবং এটি খুঁজে পেতে সক্ষম হবে বলে মনে হচ্ছে না।

আমরা আমাদের গুগল ড্রাইভকে এমনভাবে সংগঠিত করার চেষ্টা করছি যাতে সঠিক লোকেরা অনেকগুলি স্পষ্টভাবে ভাগ না করে সঠিক জিনিসগুলিতে অ্যাক্সেস পায়। আমাদের কাছে "অ্যাডমিন", "ফিনান্স", "এইচআর", "ইঞ্জিনিয়ারিং" ইত্যাদির জন্য সাব-ফোল্ডার সহ "সংস্থা" নামে একটি শীর্ষ স্তরের ফোল্ডার রয়েছে। সাব-ফোল্ডারগুলির শীর্ষ স্তরের একের চেয়ে আরও নিয়ন্ত্রণমূলক অনুমতি রয়েছে।

আমরা এখন সঠিক জায়গায় কমবেশি সবকিছু পেয়েছি এবং বেশিরভাগ ক্ষেত্রে এটি কাজ করে। সমস্যাটি হ'ল যেখানে পৃথক ফাইল বা ফোল্ডারগুলির নিজস্ব অনুমতি রয়েছে - সেগুলি তাদের ফোল্ডারগুলির অনুমতিগুলির উত্তরাধিকার বলে মনে হয় না। শ্রেণিবদ্ধের প্রতিটি অংশের সমস্ত কিছুর জন্য অনুমতিগুলি কীভাবে পুনরায় সেট করব যাতে সেগুলি পিতা-মাতা ফোল্ডারের মতো হয়?

উইন্ডোজ সার্ভার বা ম্যাক ওএস এক্সে কোনও আইটেমের জন্য "উত্তরাধিকার সূত্রে প্রাপ্ত" এবং "সুস্পষ্ট" অনুমতিগুলির মধ্যে স্পষ্ট পার্থক্য রয়েছে এবং শ্রেণিবদ্ধ সমস্ত আইটেমের জন্য "সুস্পষ্ট" অনুমতিগুলি সরিয়ে ফেলা সহজ। জিডির জন্য এটি কোথায়?

উত্তর:


3

আমি ভিদার স্ক্রিপ্ট ইনস্টল করেছি এবং ফাইলগুলির জন্য খুব ভাল কাজ করি, তবে ফোল্ডারে অনুমতিগুলি পুনরায় সেট করতে চাই না। সুতরাং, আমি ফোল্ডারগুলিকেও তাদের উপরের ফোল্ডারের অনুমতিগুলি উত্তরাধিকার সূত্রে তৈরি করতে কিছুটা কোড পরিবর্তন করেছি।

দুটি গুরুত্বপূর্ণ দাবি অস্বীকার:

  1. আমি জানি না যে আসল উদ্দেশ্যটি ফোল্ডারগুলি অপরিবর্তিত রাখার ছিল কিনা। বা এমনকি এটি আমার জন্য ছাড়াও সবার পক্ষে ভাল কাজ করেছে এবং এই সমাধানগুলি ছিল অদম্য। এটা আমার জন্য কাজ করেছে।
  2. এটি আমিই প্রথম স্ক্রিপ্ট, সুতরাং এটি খুব সম্ভবত কার্যকর যে খুব কার্যকর নয় এবং কিছু ত্রুটি কন্টেন্ট করতে পারে very দয়া করে এটিকে সংশোধন করে উন্নতি করুন।

আমি কেবল doResetPermissionsফাংশনটি পরিবর্তন করেছি , তবে সরলতার কারণে আমি সমস্ত কোড পেস্ট করেছি।

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 viewersfolder = selectedFolder.getViewers();
  Logger.log("Number of Viewers in folder: " + selectedFolder.getName() + " = " + viewersfolder.length);
  for (var i = 0; i < viewersfolder.length; i++) {
    Logger.log("      Removing viewer " + viewersfolder[i].getEmail());
    selectedFolder.removeViewer(viewersfolder[i]);
  }

  var editorsfolder = selectedFolder.getEditors();

  Logger.log("Number of Editors in folder: " + selectedFolder.getName() + " = " + editorsfolder.length);

  for (var i = 0; i < editorsfolder.length; i++) {
    Logger.log("      Removing editor " + editorsfolder[i].getEmail());
    selectedFolder.removeEditor(editorsfolder[i]);
  }

  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();
    Logger.log("Number of Viewers in file: " + file.getName() + " = " + viewers.length);
    for (var i = 0; i < viewers.length; i++) {
      Logger.log("      Removing viewer " + viewers[i].getEmail());
      file.removeViewer(viewers[i]);
    }

    var editors = file.getEditors();

    Logger.log("Number of editors in file: " + file.getName() + " = " + editors.length);

    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();
  }
}

1
এটি দুর্দান্ত, বাদে এটি নন-গুগল-আইজড ফাইলগুলি (আপলোড হওয়া পিডিএফ এবং ডোকএক্স ফাইলগুলির মতো) মুছে দেয় except
ব্যবহারকারী 68

ওয়েল যে ঠিক আমার জন্য কাজ করবে না তারপর @ ব্যবহারকারীর 683। স্ক্রিপ্টে এটি ফাইলগুলি "মুছুন" কোথায় থাকে? এতো বিপজ্জনক! এই স্ক্রিপ্টটি অনুমতিগুলি নির্ধারণ করার কথা রয়েছে, ফাইলগুলি মুছবে না!
আরভো বোয়েন

3

যদি আমার ফোল্ডারের অনুমতিগুলি পুনরায় সেট করতে হয় তবে আমি ফোল্ডারটির পুনরায় নামকরণ করব ( ফিনান্স → ফিনান্স_1 ), পুরানো নাম ( ফিনান্স ) দিয়ে নতুন ফোল্ডার তৈরি করব এবং সমস্ত উপ-ফোল্ডারগুলিকে নতুন ফোল্ডারে "সরান"।

এই পদক্ষেপের সাহায্যে আপনি সাবফোল্ডারগুলির জন্য সমস্ত অনুমতি পুনরায় সেট করুন।


2

আমি একটি গুগল অ্যাপস স্ক্রিপ্টস ওয়েব অ্যাপ তৈরি করেছি যা আপনি যা চান তার কাছাকাছি হওয়া উচিত।

গুরুত্বপূর্ণ! আপনার যে কোনও ফোল্ডারে এটি চালানোর আগে নিশ্চিত হয়ে নিন যে আপনি এটি অন্য অ্যাকাউন্টে পরীক্ষা করেছেন। যদিও স্ক্রিপ্টটি ইচ্ছাকৃতভাবে কাজ করছে বলে মনে হচ্ছে, আমি কোনও গ্যারান্টি দিতে পারি না যে এটি আপনার অনুমতিগুলিকে গোলমাল করবে না। সুতরাং স্ক্রিপ্টটি সাবধানতার সাথে যান, গুগল অ্যাপস স্ক্রিপ্টগুলির জন্য ডকুমেন্টেশনগুলি পরীক্ষা করুন এবং কোনও উত্পাদন ডেটা চালানোর আগে এটি ভালভাবে পরীক্ষা করুন।

স্ক্রিপ্টের ইউআই খুব প্রারম্ভিক, তাই অভিনব কিছু বাদ দিবেন না।

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সমস্ত নিবন্ধিত সম্পাদকদের জন্যও আহ্বান জানায় ।

অপসারণদর্শনকারীর জন্য ডকুমেন্টেশন চেক করুন এবং মুছে ফেলার জন্য আপনি যেটা চান তা নিশ্চিত করার জন্য এডিটর

নোট করুন যে স্ক্রিপ্টটি কার্যকর করতে কিছু সময় লাগতে পারে (আপনার ফোল্ডারের কাঠামোর আকারের উপর নির্ভর করে) এবং স্ক্রিপ্ট রানার লগগুলি ( দেখুন → লগগুলি ) বাদে কাজ করার সময় কোনও প্রতিক্রিয়া দেওয়া হবে না ।


ক্রিয়েটব্রান্সের মধ্যে ক্রিয়েট ব্রান্স ব্যবহার করা হয়? ওইটা কি কাজ করে?
জ্যাকব জান তুয়িনস্ট্র

1
হ্যাঁ, এটা ঠিক কাজ করা উচিত। এটি একটি পুনরাবৃত্তি ফাংশন।
ভিদার এস রামদল

0

আমি খুঁজে পেয়েছি যে আপনি যে rclone copyকোনও ডিফল্ট ভাগ করে নেওয়ার সেটিংস বেছে নিয়েছেন সেই অনুমতিগুলি পরিবর্তন করার সময়, এর সমস্ত ফাইলগুলির সাথে প্যারেন্ট ফোল্ডারটি পুনরায় তৈরি করার সবচেয়ে ভাল উপায় ছিল ।

সুতরাং আপনার যদি থাকে তবে একগুচ্ছ ডিরেক্টরি সহ একটি দল ড্রাইভ বলুন, কেবল সমস্ত কিছুকে একটি নতুন ফোল্ডারে যেমন Bad_perifications এ স্থানান্তর করুন। তারপরে সেই ড্রাইভ এবং ব্যবহারের জন্য রক্লোনে একটি নতুন রিমোট তৈরি করুন rclone copy gdrive:bad_permissions gdrive:fixed_permissions। যেহেতু অনুলিপি সার্ভার-সাইডে ঘটে তাই আপনার ডাউনলোড / আপলোড করা এড়ানো উচিত।

সতর্কতা : আমি কোনও ফাইলের তুলনা সরঞ্জামের সাথে অনুলিপি করা ফোল্ডারটি চেক করেছিলাম তারপরে যা নিশ্চিত হয়ে গেছে যে সবকিছু ঠিকঠাক স্থানান্তরিত হয়েছে এবং rclone আসলে কোনও ত্রুটি না দেখিয়ে বেশ বড় পরিমাণে ফাইল মিস করেছে।


-1

http://gappstips.com/docs-tips/view/98/protect-your-google-drive-folders-by-setting-permissions

এই লিঙ্ক অনুসারে মনে হচ্ছে আপনার ডিফল্ট অনুমতিতে ফাইল সেট করা আছে তা নিশ্চিত করা দরকার তারপরে ফোল্ডার থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া উচিত।

সম্পাদনা করুন: সিটিআরএল + এ ফোল্ডারে সমস্ত ফাইল নির্বাচন করে তারপরে আপনি কে একবারে সবার সাথে ভাগ করেছেন তা পরিবর্তন করতে পারবেন।


1
আমি মনে করি ওপি জানতে চায় যে আপনি কীভাবে সমস্ত দস্তাবেজের জন্য একই সাথে অনুমতিগুলি পুনরায় সেট করতে পারেন ।
ভিদার এস রামদল

1
আমাদের অনেকগুলি ফোল্ডার রয়েছে। তাদের সমস্ত ফাইলের জন্য কীভাবে এটি পুনরাবৃত্তভাবে করবেন?
ক্রোমস্টার বলেছেন মনিকা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.