Получить серийный номер последнего использованного устройства для пользователя Gsuite - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю в школе, которая выпускает 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);
}
...