📑
GASでGoogleドライブ監査ログを自動抽出調査メモ
事前準備
1日ごとに取得するようにする
Admin SDKのReportsを使うためにはサービスを追加しておく必要がある。
サービス > Admin SDK API の順に選択
バージョンは「reports_v1」、IDに「AdminReports」を入力して追加
調査メモ
全体(pageTokenが取得ができなくなるまでアクティビティのリストを取得する)
do {
let page;
page = AdminReports.Activities.list("all", "drive", {
pageToken:pageToken,
startTime:startTime,
endTime:endTime,
maxResults:1000
});
pageToken = page.nextPageToken;
if (!page.items) return;
page.items.forEach(function (item) {
// events(レポート内のアクティビティイベント)をレコード取得して連想配列で回す
item.events.forEach(function (event) {
//console.log(event);
let prm = _reformParameters(event.parameters);
events.push([
event.name,event.type,
prm.doc_id,prm.doc_type,prm.doc_title,prm.visibility,prm.actor_is_collaborator_account,
prm.owner,prm.owner_is_shared_drive,prm.owner_is_team_drive
]);
});
});
} while (pageToken);
アクティビティのリストを取得
page = AdminReports.Activities.list("all", "drive", {
pageToken:pageToken,
startTime:startTime,
endTime:endTime,
maxResults:1000
});
pageToken = page.nextPageToken;
if (!page.items) return;
Admin SDK: Reports API
AdminReports
Google Appsの利用状況を取得するAPI(レポート API)
activities = 利用状況?
メソッド(RESTリソース: activities)
Activities.list
list
管理コンソールアプリケーションやGoogleドライブアプリケーションなど、特定の顧客のアカウントとアプリケーションのアクティビティのリストを取得します。
使い方
list("all", "drive", {
pageToken:pageToken,
startTime:startTime,
endTime:endTime,
maxResults:1000
});
パスパラメータ
第1引数
userKey or all
データをフィルタリングするためのプロファイルIDまたはユーザーの電子メールを表します。
- すべての情報を表示するにはall
- ユーザの固有のGoogle WorkspaceプロファイルIDまたはプライマリ・メール・アドレスを表示するにはuserKey
を指定します。
第2引数
applicationName
イベントを取得したいアプリケーション名
今回はdrive
Google ドライブ アプリケーションのアクティビティ レポートは、さまざまな Google ドライブ アクティビティ イベントに関する情報を返します。ドライブのアクティビティ レポートは、Google Workspace Business および Enterprise のお客様のみご利用いただけます。
参照:
クエリパラメータ
これらが何かわかってない
pageToken
- 次のページを指定する(
pageToken:
)トークン - 複数のページを持つレポート(?)では、レスポンスにnextPageTokenプロパティがある。
- レポートの次のページを取得するフォローオン(追加)のリクエストでは、pageToken クエリ文字列に nextPageToken の値を入力(
pageToken = page.nextPageToken;
)します。
startTime
- レポートに表示される時間の範囲の始まり
endTime
- レポートに表示される時間の範囲の終わり
maxResults
- 各レスポンスページに表示されるアクティビティレコードの数を決定します。例えば、リクエストがmaxResults=1を設定し、レポートに2つのアクティビティがある場合、レポートには2つのページがあります。レスポンスのnextPageTokenプロパティには、2ページ目へのトークンがあります。maxResults クエリ文字列は、リクエストではオプションです。既定値は 1000 です。
セット・抽出
page.items.forEach(function (item) {
item.events.forEach(function (event) {
//console.log(event);
let prm = _reformParameters(event.parameters);
events.push([
event.name,event.type,
prm.doc_id,prm.doc_type,prm.doc_title,prm.visibility,prm.actor_is_collaborator_account,
prm.owner,prm.owner_is_shared_drive,prm.owner_is_team_drive
]);
});
});
}
Response body
items
レスポンスの各アクティビティレコード(オブジェクト)
"items": [
{
object (Activity)
}
Activity
アクティビティとは:アクティビティリソースのJSONテンプレート?
object (Activity)
{
"kind": string,
"etag": string,
"ownerDomain": string,
"ipAddress": string,
"events": [
{
"type": string,
"name": string,
"parameters": [
{
"messageValue": {
"parameter": [
{
object (NestedParameter)
}
]
},
"name": string,
"value": string,
"multiValue": [
string
],
"intValue": string,
"multiIntValue": [
string
],
"boolValue": boolean,
"multiMessageValue": [
{
"parameter": [
{
object (NestedParameter)
}
]
}
]
}
]
}
],
"id": {
"time": string,
"uniqueQualifier": string,
"applicationName": string,
"customerId": string
},
"actor": {
"profileId": string,
"email": string,
"callerType": string,
"key": string
}
}
Fields
events
参考
アクセストークン
Google apps scriptを無料で機能拡張出来る29個のAPIまとめ
Discussion