获取Gsuite用户最近使用的设备的序列号

时间:2018-04-30 17:52:26

标签: google-apps-script google-admin-sdk

我在一所向所有学生发放Chromebook的学校工作。我想创建一个应用程序来帮助管理和清点GSuite中的设备,并自动化向学生发布新设备的过程。

我希望能够分发设备,让学生登录并运行Chrome应用或提交将运行脚本的Google表单。代码需要能够找到用户发布的设备的序列号。然后它可以执行诸如更新设备OU和设备管理器中的注释用户之类的操作,向学生发送一封收据,告知他们已经发出了具有特定序列号的设备等。

我能做的最好的事情是编写一个遍历所有设备的脚本,按照lastsync排序,并检查设备的最新用户是否是会话的活动用户。这假设他们最近使用的设备是他们发布的设备。

或者我想创建一个电子表格,其中可以为用户查找分配的序列号,但理想情况下这将是自动化的。

有没有办法找到学生登录或运行脚本的设备的序列号。有关如何自动化设备推出和库存的任何建议吗?

这是我的代码,用于查找用户最近使用过的设备的序列号:

function main() {
  var username = Session.getActiveUser().getEmail();
  var deviceInfo = getUserDevice(username);
  Logger.log("Device serial number: %s", deviceInfo[0]);
  Logger.log("Device model number: %s", deviceInfo[1]);
}

// return serial and model number of user's most recently used device
function getUserDevice(username) {
  var pageToken, page;
  do {
    page = AdminDirectory.Chromeosdevices.list(
      'my_customer',
      {
      orderBy: 'lastSync',
      maxResults: 100,
      pageToken: pageToken
      }
    );

    var found = false;
    var devices = page.chromeosdevices;
    if (devices) {
      for (i in devices) {
        var device = devices[i];
        if (device.recentUsers && !found) {
          var users = device.recentUsers;
          var email = users[0].email;
          if (email == username) {
            var serial = device.serialNumber;
            var model = device.model;
            return [serial, model];
          }
        }
      }
    } else { 
        Logger.log('end of pages/no devices found.');
      }
    pageToken = page.nextPageToken;
  } while (pageToken);
}

0 个答案:

没有答案