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);
}
実行時に承認
実行結果
今回は利用頻度が少なすぎたのか、あまりデータが取得できなかったのと、リアルタイムでActivityのログが取得できるわけではないようです。あまりに取得結果が少なかったので、カレンダーを追加してみたのですが、すぐに取得できるようにならなかった。
結論
Google Appsはしっかり使おう!
Disclaimer
- この記事は個人的なものです。私の雇用者とは全く関係はありません。(一応つけておきます)