みやもとメモ

「Notion」「Google Apps Script」「ブログカスタマイズ」などについて書いていきます。

目次
目次

【GAS】Google Driveの指定したフォルダ配下のファイル一覧を取得

この記事をシェアする

今回はGAS(Google Apps Script)に関して書いていきます。

以前もGASに関する記事を書いています(以下リンク)。

miya-moto-memo.hatenablog.com

上記の記事で、GASを活用したOCR処理の効率化に関して書いています。
プログラムも載せていますが、プログラムの具体的な説明はしませんでした。

今回の記事で、プログラムを具体的に説明していこうと思います。
ただ、プログラムはけっこう長いので何記事かに分けて書いています。
プログラムを具体的に説明する記事は、今回が1記事目です。

関連記事をリストにまとめると、以下のようになります。

プログラム詳細説明

ということで、今回は「Google Driveの指定したフォルダ配下のファイル一覧を取得する」部分に関して書いていきます。

それでは本題へ。

今回説明するところ

miya-moto-memo.hatenablog.com

上記リンクに全体のプログラムが載っていますが、この記事では部分的にピックアップして説明していきます。

フローチャートでいうと、以下(赤枠部分)に関して説明していきます。
※getOcrTargetFileArray

フローチャート(今回説明するところ)

ここの処理は、他にも流用できそうな内容に感じます。

やりたいこと

やりたいこと

「画像」フォルダ配下のファイルを全て取得します。
「画像」フォルダを特定するために、フォルダIDを指定します。

上記の画像だと、

  • サンプル画像1.jpg
  • サンプル画像2.jpg
  • サンプル画像3.jpg

の3ファイルを取得します。

プログラム事前準備

Drive APIを有効化します。
バージョンは「v2」と「v3」があり、今回は「v2」を選択します。

Drive APIを有効化

プログラム

// フォルダID
const folderId = "フォルダIDを指定";

/**
 * メイン処理
 */
function main() {
  const option = {
    "orderBy": "title",
  }
  const files = Drive.Children.list(folderId, option);
  for (const file of files.items) {
    const fileData = Drive.Files.get(file.id);
    if (fileData.explicitlyTrashed) continue;
    if (fileData.mimeType.indexOf("image") === -1) continue;
    console.log(fileData.title); // ファイル名
  }
}

上記のプログラムを実行すると、3つのファイル名がログ出力されます。

実行ログ

「Drive API」の詳細

上記のプログラムから、「Drive API」に関する処理をピックアップして具体的に説明します。

Drive.Children.list(指定したフォルダ配下のデータを取得)

// フォルダID
const folderId = "フォルダIDを指定";

/**
 * メイン処理
 */
function main() {
  const option = {
    "orderBy": "title",
  }
  // 指定したフォルダ配下のデータ一覧を取得
  const files = Drive.Children.list(folderId, option);
  for (const file of files.items) {
    console.log(file); // ファイルIDは取得できるが、ファイル名などが取得できない
  }
}

Drive.Children.listの詳細
「Drive.Children.list」で、指定したフォルダ配下のデータをリストで取得できます。
リファレンスをリンクしておきます。
developers.google.com


ファイルの詳細情報が取得できない
「Drive.Children.list」はファイルIDを取得できるものの、ファイル名などが取得できないようです。
ファイルIDが取得できればOKな場合もありますが、今回はファイル名も取得したいなと。

ということで、ファイル情報を取得する処理も追加します。

Drive.Files.get(ファイル情報を取得)

// フォルダID
const folderId = "フォルダIDを指定";

/**
 * メイン処理
 */
function main() {
  const option = {
    "orderBy": "title",
  }
  const files = Drive.Children.list(folderId, option);
  for (const file of files.items) {
    // ファイル情報を取得
    const fileData = Drive.Files.get(file.id);
    console.log(fileData.title); // ファイル名
    console.log(fileData.mimeType); // メディアタイプ
    console.log(fileData.explicitlyTrashed); // ごみ箱に入っているかどうか
    if (fileData.mimeType.indexOf("image") === -1) continue;
    if (fileData.explicitlyTrashed) continue;
  }
}

Drive.Files.getの詳細
「Drive.Files.get」で、ファイルの詳細情報が取得できます。
リファレンスをリンクしておきます。
developers.google.com


Drive.Files.getの返却データ
「Drive.Files.get」からの返却データとして、「ファイル名」や「メディアタイプ」などがあります。
他にどんな情報が返却されているかは、以下リファレンスに詳しく載っています。
developers.google.com


ごみ箱データも取得してしまう
1つ前で紹介した「Drive.Children.list」だと、ごみ箱に入っているデータも取得してしまうようです。
※ごみ箱に入っている全てのデータを取得してしまうわけではないです。
※対象フォルダで削除したファイルに限り、取得してしまうようです。

ただ「Drive.Files.get」では、ごみ箱に入っているかどうかの情報も取得できます。
ごみ箱に入っているかどうかが分かれば、プログラムで除外することができます。

プログラム(別案)

上記のプログラムで2点、気になる部分がありました。

  • 2つAPIを呼ばなければならない
    • 「Drive.Children.list」と「Drive.Files.get」の2つ
    • 「Drive.Files.get」に関しては取得したファイル分実行しなければならない
  • ごみ箱データも取得してしまうため、除外するコードが必要になる

上記を解消するプログラムを別案として載せておきます。

// フォルダID
const folderId = "フォルダIDを指定";

/**
 * メイン処理
 */
function main() {
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    console.log(file.getName()); // ファイル名
  }
}
実行ログ

上記のプログラムで、気になる部分が解消されました。
読んでいるAPIは1つだけですし、ごみ箱データも取得してこないようです。

DriveApp.getFolderByIdの詳細
「DriveApp.getFolderById」で指定したフォルダ配下のデータをリストで取得できます。
リファレンスをリンクしておきます。
developers.google.com


DriveApp.getFolderByIdの返却データ
「getName」でファイル名を取得できます。
他にどんなファイル情報が取得できるかは、以下リファレンスに載っています。
developers.google.com

おわりに

ということで、「GASでGoogle Driveのフォルダ内のファイル一覧を取得する」に関してアレコレ書いてみました。

「プログラム(別案)」に関しては、こちらの記事を投稿した後に色々調べて見つけた方法なので、別案としました。
正直なところ、別案の方がプログラムがスッキリして良いなと。

プログラムを具体的に説明する記事は、今回が1記事目です。
おそらくあと2記事ほど投稿することになるかなと思います。

この記事が参考になれば幸いです。

関連記事のリスト、改めてリンクしておきます。

プログラム詳細説明

関連記事

GAS(Google Apps Script)に関してはいくつか記事にしています。
気になる記事があればぜひ。

GASの活用事例


GASを活用してGoogle DriveでのOCR処理を効率化 - 派生記事

TOPへ戻る HOMEへ