我正在创建一个谷歌应用脚本插件,允许我们添加和删除用户到我们的谷歌应用程序域。某些信息会输入到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
来确保这一点。
奇怪的是,经过进一步调查,用户实际上已被删除,但仍然会抛出“资源未找到用户密钥”错误。
任何帮助都可以解释为什么会发生这种错误以及如何解决这个错误。
答案 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)
}