

現在、GoogleDriveの特定の共有ドライブの管理者権限を持つアカウントで作業をしています。  
そのアカウントでは、手動では他の管理者ユーザを追加や削除する事が出来ています。  
GASプログラムからは追加は可能ですが、共有ドライブから他の管理者の削除ができません。

手動での削除方法は下記です  
「共有ドライブ」→「特定の共有ドライブ」→「メンバーを管理」→「アクセス権の削除」  
で管理者を削除する事は出来ます。

GASから共有ドライブの管理者ユーザを削除したいのですが、削除ができません。  
管理者権限のユーザを追加することは出来ます。  
また、スプレッドシートの投稿者や閲覧者の追加や削除は出来ます。

削除した場合のエラーは下記２通りです。

１．`Error:GoogleJsonResponseException: API call to drive.permissions.list
failed with error: The requesting user does not have the administrator
privileges required to access shared drive .`

２．`権限削除に失敗しました。：GoogleJsonResponseException:
次のエラーが発生し、drive.permissions.delete の呼び出しに失敗しました: File not found: role,,value,
xxxxxxx@xxxxxx,type,domain`

【スクリプトの内容】

[code]

    function deleteDrivePermissions2023(){
    
    // ファイル名情報
      var spName  =  SpreadsheetApp.getActiveSpreadsheet().getName();
    // シート情報
      var sheet2  =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("XXX");   
    // シートからID情報
      var mainId         =  sheet2.getRange("B2").getValue();
    　var driveFolder    =  DriveApp.getFolderById(mainId);
      var driveFile      =  DriveApp.getFolderById(mainId);
      
    // 各データ情報
      var data    =  sheet2.getRange( "A5:D" + sheet2.getLastRow()).getValues();
      for (var i = 0; i < data.length; i++) {
        var name        =  data[i][0];
        var email       =  data[i][1];
        var permission  =  data[i][2];
        var action      =  data[i][3];
        var log         =  []; 
    
    // 権限を削除、追加、変更      
    
    　　　if (action  ===  "削除") {
            if (email === "YYY@ZZZ"){
              log.push(email + "の権限は削除できません。");
              sheet2.getRange(i + 5, 5).setValue( email + "権限は削除できません。")
              continue;　　
            }
                //対象の共有ドライブからメンバーを削除
           try {
    
              Drive.Permissions.remove(mainId, email,  { 
                  'sendNotificationEmails'  :   false,   //trueとすると通知が飛んでしまいます
                  'supportsAllDrives'       :   true     //共有ドライブサポートを有効化する      }
                });
                
                var newPermission1 = {  
                  "role"  :  "organizer",    //organizer 管理者権限になります 
                  "type"  :  "user",
                  "value" :  email   
                  };
    
                var removeOptions = {
                  sendNotificationEmails : false,
                  supportsAllDrives: true,
                  supportsTeamDrives: true,
                  useDomainAdminAccess: true
                };
                 Drive.Permissions.remove(newPermission1, driveFolder.getId(),removeOptions);
    
    
              sheet2.getRange(i + 5, 5).setValue( name + "権限を削除しました。")
            } catch (e) {
              sheet2.getRange(i + 5, 5).setValue( name + "権限削除に失敗しました。："　+ e );  
            }
         }
      }
    }
    
[/code]

どのように対応したらよろしいでしょうか。  
ご教授いただければ幸いです。


CC BY-SA 4.0
2023-04-05T05:03:30.403
94420
2023-04-10T07:51:40.047
2023-04-10T07:51:40.047
3060
57824
question
google-apps-script
GASで共有ドライブの管理者ユーザ削除ができません