LoginSignup
2
3

More than 3 years have passed since last update.

GoogleDrive上のファイルの変更履歴をとる

Last updated at Posted at 2019-11-12

概要

最終更新日時だけではなく、ファイル名変更や移動などをとりたい。

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の拡張サービス」

image.png

image.png
↑Operaで見てるのでなんか変

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をオンにする必要がある

image.png

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にほしいものが入ってる
2
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
2
3