在Google Apps脚本中获取用户ID

时间:2018-05-12 12:31:46

标签: google-apps-script

是否可以使用Session service或类似内容在Google Apps脚本中获取用户ID(而非电子邮件地址)。

我在GAS中没有看到任何对它的引用,但在GAE中,我能够从Users API获取用户ID。用户ID是唯一标识用户的标识符,即使用户更改其电子邮件地址也是如此。

我希望在GAS中使用相同的东西。

2 个答案:

答案 0 :(得分:2)

  

是否可以使用会话服务或类似功能获取Google Apps脚本中的用户ID(而非电子邮件地址)?

是的,这是可能的。您可以通过利用AdminSDK Directory API which is accessible from App Script via the Admin Directory Advanced Google Service获取用户ID。

样本用法:

// NOTE: Admin Directory Advanced Service must be enabled first.

// Get first page of user ids for users in domain
var userIds = AdminDirectory.Users.list({"domain":"www.example.com"}).users.map(function(user) { 
    return user.id; 
});

答案 1 :(得分:1)

使用"高级服务"驱动REST API以查询About resource,这可以返回更加细致的user对象:

function getInfo() {
  var about = Drive.About.get();
  // Use the name, permissionId, email, etc
  var user = {
    name: about.name,
    permissionId: about.permissionId,
    driveUser: about.user,
    ....
  };

  return user;
}

Drive.Permissions.getIdForEmail方法,如果这就是你想要的。

如果自动范围检测过于激进,您可以尝试将其中一个.readonly范围添加到清单中:https://developers.google.com/drive/v2/reference/about/get#auth

注意:在您的Apps脚本项目中使用之前,您必须拥有enable the advanced service客户端库及其底层API。

另见: