删除Google Apps脚本中的用户 - 修复“资源未找到用户密钥”错误

时间:2016-06-27 17:32:26

标签: google-apps-script google-apps

我正在创建一个谷歌应用脚​​本插件,允许我们添加和删除用户到我们的谷歌应用程序域。某些信息会输入到Google表格中(名字,姓氏,员工编号等)。然后,进入用户的人可以选择他们想要添加的所有用户行。

然后,

Google应用程序脚本会根据其姓氏和名字创建用户名和密码,并将其输入我们的Google Apps域名等。这部分完美无缺。

我正在尝试编写另一个函数,允许管理用户的人选择他们想要从我们的域中删除的用户行,无论出于何种原因,然后单击“删除用户”按钮。这将根据用户在我们系统中的电子邮件地址删除用户。

这是我的代码:

function delUsers() {

  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveRange();
  var i = range.getRow();
  var stop = range.getLastRow();

  while (i != stop + 1) {
    var email = sheet.getRange("C" + i).getValue();
    var user = String(email);
    AdminDirectory.Users.remove(user);
  }
};

您将看到该函数遍历所选的每一行并获取电子邮件地址。它的格式为“First.Last@domain.com”。

问题是我不断收到错误“Resource Not Found userKey”。根据AbrahamB的建议,我确保我的userKey是GAS文档中的字符串。我使用了javascript的typeof来确保这一点。

奇怪的是,经过进一步调查,用户实际上已被删除,但仍然会抛出“资源未找到用户密钥”错误。

任何帮助都可以解释为什么会发生这种错误以及如何解决这个错误。

1 个答案:

答案 0 :(得分:3)

https://developers.google.com/admin-sdk/directory/v1/reference/users/delete

在这种情况下,它需要一个字符串,而不是像你创建的那样的资源。因此,请继续执行以下操作:

while (i != stop + 1) {
  var email = sheet.getRange("C" + i).getValue();
  var delete_user = AdminDirectory.Users.remove(email);
}

关于您更新的问题,如果用户已被删除,则可能会发生这种情况。但是通常的做法是使用try / catch,因为如果我们的脚本出错,它将完全停止。但是,如果它捕获到错误,您可以记录它并继续迭代其余用户。

try {
   AdminDirectory.Users.remove(user);
 } catch(e) {
   // if the script code throws an error,
   // do something with the error here
   // For example: Logger.log(e)
 }