みやもとメモ

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

目次
目次

【GAS】Google Driveでファイルを取得するパターンまとめ(全件/ファイル名/MimeType/検索/ID)

この記事をシェアする

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

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

miya-moto-memo.hatenablog.com

上記の記事で、Googleドライブの指定フォルダ配下のファイル一覧を取得する方法について書いています。

ファイルを取得する方法は他にも色々あります。
自分が知っている範囲ではありますが、まとめてみようと思います。

それでは本題へ。

やること

紹介する取得パターンは

  • 全件
  • ファイル名指定
  • MimeType指定
  • 検索
  • ID指定

の5パターンです。

取得の際は、以下フォルダのサンプルデータを使用します。

サンプルデータ

ファイルID、フォルダIDはプログラムで使用します。
ファイルIDは「対象ファイルを右クリック→共有→リンクをコピー」で取得し、そこからファイルIDを取り出します。

プログラム

プログラムは以下の通りです。

// ファイルID
const FILE_ID = PropertiesService.getScriptProperties().getProperty('FILE_ID');
// フォルダ情報
const FOLDER_ID = PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
const FOLDER = DriveApp.getFolderById(FOLDER_ID);

/**
 * ファイル取得
 */
function getFiles() {
  const files = FOLDER.getFiles();
  outputLog(files);
}

/**
 * ファイル取得(ファイル名指定)
 */
function getFilesByName() {
  const files = FOLDER.getFilesByName('サンプルデータ_画像.png');
  outputLog(files);
}

/**
 * ファイル取得(MimeType指定)
 */
function getFilesByType() {
  const files = FOLDER.getFilesByType(MimeType.GOOGLE_SLIDES);
  outputLog(files);
}

/**
 * ファイル取得(検索)
 */
function searchFiles() {
  const params = 'title contains "サンプルデータ" and mimeType contains "spreadsheet"';
  const files = FOLDER.searchFiles(params);
  outputLog(files);
}

/**
 * ファイル取得(ID指定)
 */
function getFileById() {
  const file = DriveApp.getFileById(FILE_ID);
  console.log(file.getName());
}

/**
 * ログ出力
 */
function outputLog(files) {
  while (files.hasNext()) {
    const file = files.next();
    console.log(file.getName());
  }
}

あらかじめフォルダIDを基にフォルダ情報を取得しておきます。
そこからフォルダ内の情報に対して、色々なパターンで取得します。

ただし、ID指定は例外です。
ドライブ全体(DriveApp)に対して実行します。

なお、プログラム上の「FOLDER」を「DriveApp」に差し替えると、取得対象が「フォルダ内」から「Googleドライブ全体」になります。

プログラム実行

それぞれの関数を実行してみます。

getFiles:全件取得

const files = FOLDER.getFiles();
プログラム実行:getFiles
取得対象:getFiles

getFilesByName:ファイル名指定

const files = FOLDER.getFilesByName('サンプルデータ_画像.png');
プログラム実行:getFilesByName
取得対象:getFilesByName

getFilesByType:MimeType指定

const files = FOLDER.getFilesByType(MimeType.GOOGLE_SLIDES);
プログラム実行:getFilesByType
取得対象:getFilesByType

searchFiles:検索

const params = 'title contains "サンプルデータ" and mimeType contains "spreadsheet"';
const files = FOLDER.searchFiles(params);
プログラム実行:searchFiles
取得対象:searchFiles

getFileById:ID指定

const file = DriveApp.getFileById(FILE_ID);
プログラム実行:getFileById
取得対象:getFileById

参考リンク

各取得パターンのリファレンスをリンクしておきます。

getFiles

「getFiles」で、全てのファイルのコレクションを取得します。

なお、「DriveApp」「Folder」それぞれに「getFiles」があります。
取得範囲は「DriveApp=Googleドライブ全体」「Folder=フォルダ内」となります。

developers.google.comdevelopers.google.com

getFilesByName

「getFilesByName」で、指定した名前のファイルのコレクションを取得します。

こちらも「DriveApp」「Folder」それぞれに「getFilesByName」があります。

developers.google.comdevelopers.google.com

getFilesByType

「getFilesByType」で、指定したMimeType(メディアタイプ)のファイルのコレクションを取得します。

こちらも「DriveApp」「Folder」それぞれに「getFilesByType」があります。

developers.google.comdevelopers.google.com

用意されているMimeType(メディアタイプ)は以下に載っています。
developers.google.com

searchFiles

「searchFiles」で、指定した検索条件に合致したファイルのコレクションを取得します。

こちらも「DriveApp」「Folder」それぞれに「searchFiles」があります。

developers.google.comdevelopers.google.com

検索条件の指定方法に関しては、以下に詳しく載っています。
developers.google.com

getFileById

「getFileById」で、指定したIDのファイルを取得します。

こちらは「DriveApp」にのみ存在するようです。
developers.google.com

おわりに

ということで、「【GAS】Googleドライブでファイルを取得するパターンまとめ」に関してアレコレ書いてみました。

今回挙げた取得パターン以外にもファイルを取得する方法はあるかもしれませんが、とりあえず自分が知っている範囲で挙げてみました。

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

関連記事

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

GASの活用事例

TOPへ戻る HOMEへ