1

フォルダーの現在の編集者を取得し、最下位レベルのフォルダーのみを表示するように権限を変更するスクリプトを作成しようとしています。Google ドライブがトップ フォルダ (表示のみ) のアクセス許可をすべてのサブ フォルダに適用するのに時間がかかりすぎていることを除いて、すべて正常に動作しています。このため、TOP_FOLDER から継承されて以来、もともとすべてのサブ フォルダへの編集アクセス権を持っていた TOP_FOLDER の編集者は、ドライブでまったく同じアクションを実行したときに全員がビューを持っていても、スクリプトを実行するとこのアクセス権を保持します。ページを更新した後にのみアクセスします。

これを修正する方法について誰かアイデアがありますか?

function fixFilePermissions() {

  var oldEditors = TOP_FOLDER.getEditors();

  TOP_FOLDER.addEditors(ADMINS);

  //remove All but the admins
  for each (var editor in oldEditors){
    //if editor is not an admin
    if(ADMINS.indexOf(editor) < 0){
      //remove editor
      TOP_FOLDER.removeEditor(editor);
      //add back as viewer
      TOP_FOLDER.addViewer(editor);
    }
  }

  recFixFilePermissions(TOP_FOLDER);

}


function recFixFilePermissions(folder){

  while(folder.getEditors().length > ADMINS.length){
    Utilities.sleep(200);
    Logger.log(folder.getEditors().length - ADMINS.length);
  }

  Logger.log("Folder: "+folder.getName());
  Logger.log("Editors: "+folder.getEditors());
  Logger.log("Viewers: "+folder.getViewers());


  if(folder.getFolders().length > 0){

    for each (subfolder in folder.getFolders()){
      recFixFilePermissions(subfolder);
    }

    Logger.log("Has Subfolder");    

  }else{

    for each (var person in folder.getViewers()){
      folder.addEditor(person);
      Logger.log("Gave " + person + " Edit Access to " + folder.getName());
    }
  }

}
4

0 に答える 0