LoginSignup
4
4

More than 5 years have passed since last update.

GASでAdmin SDKを利用する(Reports編)その1

Posted at

Reports APIについて

公式ドキュメント:https://developers.google.com/admin-sdk/reports/v1/get-start/getting-started

Reports APIは、Google Appsの利用状況を取得するAPIです。指定するパラメータによって、以下の利用状況を取得する事ができます。

  • admin(管理者イベント)
  • calendar(カレンダー)
  • drive(Google Drive)
  • groups(Google Groups)
  • login(ログイン)
  • token(OAuthを使った認証)

今回は、Activitiesを取得してみる。

今回は、Activitiesを使って、すべてのイベントのリストを取得します。

今日のコード.gs

今回は、Spreadsheetに出力するようにしました。eventの数が複数になるようなので、ちょっとソースコードは整理されていない感じになっています。

コード.gs
function myFunction() {
  var applicationNames = ["admin", "calendar", "drive", "groups", "login", "token"];
  var cells = [];

  cells.push(["id", "actor", "ipAddress", "ownerDomain", "event.name", "event.type", "event.parameters"]);
  for(var name in applicationNames) {
    var pageToken = "";
    Logger.log(applicationNames[name]);
    do {
      var page;
      if(pageToken != "") {
        page = AdminReports.Activities.list("all", applicationNames[name], {pageToken: pageToken});
      } else {
        page = AdminReports.Activities.list("all", applicationNames[name]);
      }
      pageToken = page.nextPageToken;
      if(page.items) {
        for(var i = 0; i < page.items.length; i++) {
          var rows = [];

          if(page.items[i].events.length > 0) {
            for(var j = 0; j < page.items[i].events.length; j++) {
              rows.push(page.items[i].id);
              rows.push(page.items[i].actor);
              rows.push(page.items[i].ipAddress);
              rows.push(page.items[i].ownerDomain);
              rows.push(page.items[i].events[j].name);
              rows.push(page.items[i].events[j].type);
              rows.push(page.items[i].events[j].parameters);

              cells.push(rows);
            }
          } else {
            rows.push(page.items[i].id);
            rows.push(page.items[i].actor);
            rows.push(page.items[i].ipAddress);
            rows.push(page.items[i].ownerDomain);
            rows.push("なし");
            rows.push("なし");
            rows.push("なし");

            cells.push(rows);
          }          
        }
      }
      Logger.log(pageToken);
    } while(pageToken != undefined);
  }

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  sheet.getRange("A1:G" + cells.length).setValues(cells);
}

実行時に承認

ほぼ毎回のことですが、実行時に承認をする必要があります。
許可のリクエスト.png

実行結果

今回は利用頻度が少なすぎたのか、あまりデータが取得できなかったのと、リアルタイムでActivityのログが取得できるわけではないようです。あまりに取得結果が少なかったので、カレンダーを追加してみたのですが、すぐに取得できるようにならなかった。

結論

Google Appsはしっかり使おう!

Disclaimer

  • この記事は個人的なものです。私の雇用者とは全く関係はありません。(一応つけておきます)
4
4
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
4
4