尝试在Admin Directory API中删除Orgunit始终返回404

时间:2018-05-09 20:57:45

标签: google-api google-admin-sdk google-apis-explorer

我是否尝试使用API​​ Explorer https://developers.google.com/admin-sdk/directory/v1/reference/orgunits/delete#try-it或使用.NET API时遇到同样的问题。

我有一个简单的集成测试,可以在该组织下创建一个新的Orgunit +用户。

然后我这样做:

  1. 列出与该orgunit路径匹配的所有用户
  2. 成功删除
  3. 尝试删除orgunit本身=> 404
  4. 我知道orgunit仍在那里。我可以进入API Explorer并在此处列出https://developers.google.com/admin-sdk/directory/v1/reference/orgunits/list

    enter image description here

    如果我现在尝试在API Explorer中删除它,那就没有运气了。我也尝试使用我的root OU的真实客户ID(而不是my_customer)。仍然没有运气。

    enter image description here

    方式我可以通过管理控制台删除此orgunit。

    enter image description here

    此操作成功 - 此组织下方没有子组织或用户,或者它将失败。

    enter image description here

    为什么我不能通过API或API Explorer删除Orgunit?

1 个答案:

答案 0 :(得分:0)

您可以使用以下嵌入在Google表格文档中的Google Apps脚本删除OU的列表。

  • 您需要管理员权限才能运行脚本。
  • 该脚本指向一个活动的Google表格,其中有两个表格: OrgUnits Log
  • 名为OrgUnits的工作表有两列:一列用于 orgUnitPath orgUnitId
  • 您的客户ID存储在变量 CUSTOMER_ID 中。
  • 警告,最终您会收到与“更高的请求率”相关的错误 超出配置”,只需隔离案例然后重试即可。

这是脚本:

function DeleteOrgUnits(){
  var inputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("OrgUnits");
  var outputSheetLog = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Log");  
  var dataValues =   inputSheet.getDataRange().getValues();
  var i, err, errObj;
  var orgUnit, orgUnitItem, orgUnitId = [], orgUnitPath;
  var customerId = CUSTOMER_ID;
  
  outputSheetLog.getDataRange().clear();


  if (dataValues){
    for ( i in dataValues ){
      orgUnit = dataValues[ i ];
      orgUnitPath = orgUnit[ 0 ];
      orgUnitId = orgUnit[ 1 ];
      if (orgUnitPath.length > 0 ){
        err = false;
        try { 
          orgUnitItem = AdminDirectory.Orgunits.remove(customerId, orgUnitId);
        } catch(e){ err = true; errObj = e; };
        if (err)
          outputSheetLog.appendRow([orgUnitPath, 'Error', orgUnitItem, errObj.message ]); 
        else
          outputSheetLog.appendRow([orgUnitPath, 'Deleted', orgUnitItem ]);
      }
    }
    outputSheetLog.appendRow(['Done!']);
  } else {
    outputSheetLog.appendRow(['No Data!']);
  }
}