フォルダ内からファイルの作成日時情報を取得して、直近で更新があったファイルを取得します。
getDateCreated()
getDateCreatedメソッドを使うことで、ファイルの作成日を取得できます。
[rml_read_more]
const folderId = "XXXXXXXXXXXXXXXXXXXX";
const now = new Date();
// 直下のファイルを全て取得
const files = DriveApp.getFolderById(folderId).getFiles();
while (files.hasNext()) {
const file = files.next();
let createDate = file.getDateCreated();
const timeDiff = (now.getTime() - createDate.getTime()) / (60 * 1000);
if (1 >= timeDiff) {
Logger.log("file.getName():" + file.getName());
Logger.log("file.getId():" + file.getId());
fileId = file.getId();
}
}
情報 now.getTime():1678376566149
情報 createDate.getTime():1678376393782
情報 timeDiff:2.8727833333333335
情報 file.getName():ファイル取得
情報 file.getId():XXXXXXXXXXXXXXXXXXXXXXX
まず、フォルダのIDを定数 folderId
に設定します。そして、現在の日時を取得し、now
に代入します。次に、DriveApp
サービスの getFolderById()
メソッドを使用して、指定されたフォルダ内のすべてのファイルを取得します。
while
ループを使用して、取得したファイルに対して順次処理を行います。next()
メソッドを使用して、現在処理中のファイルを取得し、そのファイルの作成日時を getDateCreated()
メソッドで取得します。
その後、現在の日時とファイル作成日時の差分を分単位で計算し、変数 timeDiff
に代入します。この timeDiff
の値が 1 分以下の場合、そのファイルは直近に作成されたファイルと見なされます。
最後に、条件に合致したファイルのファイル名と ID を Logger.log()
で出力します。この場合、変数 fileId
には最後に処理されたファイルの ID が代入されます。
getTime() メソッド
getTime() メソッドは、 ECMAScript 元期(1970 年 1 月 1 日 00:00:00 UTC )から指定した日時までの経過時間をミリ秒で表した数値です。
このコードでは、現在時刻を now
変数に取得し、取得したファイルの作成日時を createDate
変数に代入しています。そして、 getTime()
メソッドを使用して、これら2つの日時を UTC 元期からの経過ミリ秒数に変換し、差分を計算しています。
60 * 1000 で割ることで、ミリ秒単位の時間差分を分単位に変換しています。つまり、 (now.getTime() - createDate.getTime()) / (60 * 1000)
で求められる timeDiff
は、現在時刻とファイル作成日時の差分を分単位で表現したものとなります。
60 * 1000で割ることで1分単位になります。
まとめ
上記のスクリプトで1分以内にファイルの更新が行われたファイルのIdを取得することができます。
ご参考ください。