LoginSignup
3
3

More than 5 years have passed since last update.

【GSuite】 GoogleAppsScriptを用いて、ユーザごとのデータ使用量を取得する

Posted at

なぜユーザごとのデータ使用量が必要になったのか

 GSuiteの料金プランは大きく分けて3つある。
 ・Basic
 ・Business
 ・Enterprise

Basicの場合には(メールとドライブの合計の)使用可能量が30GB決まっています。
その上限を超えてしまうとメールが受信できないといった問題が発生してしまいます。

上限を超える前に利用者に通知を行うために取得を行うことを考えました。
#プランをBusinessに変更すれば解決するので、アップグレードした方が早いし・・・
 そもそもメールやファイルが30GB行く前に整理しろよ・・・・

実際に実装開始

「Reports API」といううのを使えば行けそうやな・・・
公式リファレンス

しかし、問題が発生
情報がない。しかも公式リファレンスが英語しかない⇒読めない
そうだよね!アップグレードした方が早いんだもん!

グーグル翻訳を片手に実装を行いました。

コード.gs
/**
* return:2次元配列
* [[名前,使用量],・・・]
*/
function getUserReports(){
  //取得パラメータ指定
  // accounts:used_quota_in_mb ⇒ 使用量
  // accounts:admin_set_name   ⇒ フルネーム
  var options = {parameters:"accounts:used_quota_in_mb,accounts:admin_set_name"};

  var date = new Date();
   //2日前の日付を設定(それ以降の日付だとレポートが作成されていないことが有る。) 
  date.setDate(date.getDate()-2);

  usedDate = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy-MM-dd');
  reports = AdminReports.UserUsageReport.get("all", usedDate, options).usageReports;

  var cells = [];
  for(var i = 0;i < reports.length;i++){
    var rows = [];
    var paramArray = userdMbReports[i]["parameters"];
    var fullName = paramArray[0]["stringValue"];//名前
    var usedMb = paramArray[1]["intValue"];//使用量

    rows.push(fullName);
    rows.push(usedMb);
    cells.push(rows);
    }
  }
  Logger.log(cells)
  return cells;
}

足りない情報が多々あるため、
適宜追記していきます。

最後に

主にこちらの記事を参考にさせていただきました。
https://qiita.com/ttyokoyama/items/5df1d9ad98eaac0a1a8b

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3