URLをコピーしました!
スキルアップを始める!

【GAS】更新があったファイルをフォルダ内を検索して取得する

GAS(GoogleAppsScript)

フォルダ内からファイルの作成日時情報を取得して、直近で更新があったファイルを取得します。

getDateCreated()

getDateCreatedメソッドを使うことで、ファイルの作成日を取得できます。

Class File  |  Apps Script  |  Google for Developers

[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を取得することができます。

ご参考ください。

会員登録するとご利用できます。
Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら