概要
最終更新日時だけではなく、ファイル名変更や移動などをとりたい。
sheetIdとは
https://docs.google.com/spreadsheets/d/1234567890abcdefghijklmn
というファイルでいうなら、
https://docs.google.com/spreadsheets/d/[ここがsheetId]
である。
最終更新日時をとるだけなら
DriveApp.getFileById(id)
を使う
https://developers.google.com/apps-script/reference/drive/drive-app#getFileById(String)
ただしDrive APIをオンにする必要がある
- 「Googleの拡張サービス」
lastUpdatedがその値
var sheetId = "1234567890abcdefghijklmn";
var file = DriveApp.getFileById(sheetId);
var lastUpdated = file.getLastUpdated();
その他の履歴を探索したいなら
AppsActivity.Activities.list(hash)
を使う
https://developers.google.com/drive/activity/v1/reference/activities/list
ただしDrive Activity APIをオンにする必要がある
eventにいろんな情報が入ったハッシュが得られる
var pageToken; // 1回のリクエストで取りきれる情報では足りない時に使うらしい
var sheetId = "1234567890abcdefghijklmn";
var result = AppsActivity.Activities.list({
'drive.fileId': sheetId,
'source': 'drive.google.com',
'pageToken': pageToken
});
// よくわからんので全部チェックして、条件に合うものがヒットしたら抜けるようにしてる
var isDone = false;
for (var actIndex = 0; actIndex < result.activities.length; actIndex++) {
for (var evtIndex = 0; evtIndex < result.activities[actIndex].singleEvents.length; evtIndex++) {
var event = result.activities[actIndex].singleEvents[evtIndex];
if (event["primaryEventType"] != "edit" && event["primaryEventType"] != "rename") continue;
// 時刻とユーザをとっておく
var dt = new Date(Number(event["eventTimeMillis"]) + 60*60*9);
var author = event["user"]["name"];
isDone = true;
break;
}
if (isDone) break;
}
// dtとauthorにほしいものが入ってる