Jim*_*m F 4 google-apps-script google-admin-sdk
我正在尝试通过管理 SDK 更新一些用户数据。我以为这会起作用
function directoryUpdate(userId, userDept, userLocation, userPhone, userTitle) {
var update = {
organizations:
{
name: "Next Step Living",
title: userTitle,
primary: true,
type: "work",
department: userDept,
location: userLocation
},
phones:
{
value: userPhone,
type: "work",
primary: true,
}
};
update = AdminDirectory.Users.update(update, userId);
Logger.log('User %s updated with result %s.', userId, update)
return true;
}
Run Code Online (Sandbox Code Playgroud)
但它不会更新记录中的组织或电话数据。它也不会抛出任何类型的错误。
三个问题,执行此更新的正确语法是什么,我认为它的工作方式类似于 API 更新,并且行为类似于更新插入,这是真的吗?以及在更新期间捕获任何错误的最佳实践是什么。我想在更新失败时返回 false 并捕获该信息。在此先感谢您的帮助。
小智 6
谢谢你的提问!这“启发”了我弄清楚更新 API 的工作原理,因为我已经检索了 User 对象,更新了属性,但还没有弄清楚如何将数据保留回 Google。
因此,这是我的原型代码,它似乎可以工作(目标是根据电子表格中的条目重置用户的密码)。
对我来说,这似乎不是最优雅的代码,因为管理 API 需要两次往返,而且我们必须两次发布电子邮件地址,但我猜这是 JSON API 的副作用。
var emailAddress = userListSheet.getRange(row, 1).getValue();
var password = userListSheet.getRange(row, 2).getValue();
Logger.log('Email: %s, Password: %s', emailAddress, password);
// Reset user's password
var user = AdminDirectory.Users.get(emailAddress);
user.password = password;
if (changePasswordAtNextLogin == 'Yes') {
user.changePasswordAtNextLogin = true;
}
AdminDirectory.Users.update(user, emailAddress);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5181 次 |
| 最近记录: |