GoogleAppsScript 携帯端末承認待を取得・承認・通知する

こんにちはひさです。
先週末木更津アウトレットまで行ってきました。

f:id:ihisa:20150427152546p:plain

気温は高かったものの強風ですっかりお腹が冷えてしまい、アクアラインのETC入口過ぎた直後の建物に緊急ピットインしました。
皆さん右ウインカーで本線に合流しようとする中、左ウインカーを出す私・・・
初めてあの手の施設を利用させていただきました。ナイス判断でありました。

今回はGoogle Apps Scriptsで携帯端末承認待ちをあれこれしようというお話です。
携帯端末承認は自動承認にできますが、個人携帯は利用させたくないとか特定の組織は承認を通したいとかあると思いますのでそのような場合はいいかもしれません。

携帯端末承認待ちを取得する&slack通知

管理者権限を持つユーザーのアカウントで携帯端末一覧が取得できます。 取得した一覧のステータスを見て判断するだけです。

function GetDeviceInfo(){ 
  // 管理者のcustomerIDを取得する
  var adminuser = AdminDirectory.Users.get("xxxx@sanwasystem.com");
  
  // 携帯端末情報一覧の取得
  var mobiledevices = AdminDirectory.Mobiledevices.list(adminuser.customerId);
  for (var j = 0; j < mobiledevices.mobiledevices.length; j++) {
    if (mobiledevices.mobiledevices[j].status == "PENDING"){                                      
      // Slackに通知 
      PostSlack("【携帯端末承認依頼】" 
                + String.fromCharCode(10)
                + " 【name】" + mobiledevices.mobiledevices[j].name[0] + String.fromCharCode(10)
                + " 【deviceId】" + mobiledevices.mobiledevices[j].deviceId + String.fromCharCode(10)
                + " 【model】" + mobiledevices.mobiledevices[j].model + String.fromCharCode(10)
                + " 【type】" + mobiledevices.mobiledevices[j].type);     
    }
  }
}

function PostSlack(postMessage){
  var postData = 
  {
     "channel" : xxxxxxxx,
     "username" : "あっぷすちゃん",
     "text" : postMessage
  };
  var payload = JSON.stringify(postData);
  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };

  UrlFetchApp.fetch("https://hooks.slack.com/services/xxxxxxxxxxxxxx", options);
}

ステータスは以下参照
https://developers.google.com/admin-sdk/directory/v1/reference/mobiledevices 楽ちん!

承認待ちがある状態で起動するとこんな感じで通知されます。

f:id:ihisa:20150427114115p:plain

承認する

ステータス[PENDING]を拾っているので、そのあとに承認APIを叩けばいいです。

function GetDeviceInfo(){
  
  // 管理者のcustomerIDを取得する
  var adminuser = AdminDirectory.Users.get("xxxx@sanwasystem.com");
  
  // 携帯端末情報一覧の取得
  var mobiledevices = AdminDirectory.Mobiledevices.list(adminuser.customerId);
  for (var j = 0; j < mobiledevices.mobiledevices.length; j++) {
    if (mobiledevices.mobiledevices[j].status == "PENDING"){                                            
      // 承認させる
      AdminDirectory.Mobiledevices.action(
      {action: 'approve'}, adminuser.customerId, mobiledevices.mobiledevices[j].resourceId );

      // Slackに通知 
      PostSlack("【携帯端末承認】" 
                + String.fromCharCode(10)
                + " 【name】" + mobiledevices.mobiledevices[j].name[0] + String.fromCharCode(10)
                + " 【deviceId】" + mobiledevices.mobiledevices[j].deviceId + String.fromCharCode(10)
                + " 【model】" + mobiledevices.mobiledevices[j].model + String.fromCharCode(10)
                + " 【type】" + mobiledevices.mobiledevices[j].type);
    }
  }
}

トリガー設定

GASのトリガー設定をします。
これで指定間隔毎にfunctionが起動するのでslackみてれば済むようになります。

f:id:ihisa:20150427113715p:plain