【Google Apps Script(gas)】Google Driveを使ったファイルの操作について – 前編

2019年9月8日Google Apps

Google DriveにあるファイルをGoogle Apps Scriptでファイルを操作する方法について、まとめてみようと思います。
フォルダの操作と同じようなことができるとプログラムを作るには十分かなと思います。

ファイルを操作するには

スポンサーリンク

ファイルを操作するにはDriveAppクラス、Folderクラス、Fileクラスを使用します。
DriveAppクラスはrootフォルダ(マイドライブ)配下に対して、Folderクラスは任意のフォルダに対して操作します。

  • DriveAppクラス:rootフォルダ(マイドライブ)配下に対してのファイル操作に使用する
  • Folderクラス:任意のフォルダにファイルを新規作成、削除する場合などに使用する
  • Fileクラス:任意のファイルに対して操作する場合に使用する

ファイルの新規作成

ファイルを新規作成する場合はcreateFile(name,content)ソメッドを使用します。

  • createFile(name,content)
  • createFile(name,content, mimeType)
  • createFile(blob)

基本の構文

指定のフォルダに新しくファイルを作成する場合は下記の通りに実行します。Folderオブジェクトを生成してからcreateFile()を実行します。
引数:nameにはファイル名、引数:contentにはファイルの内容を入力します。

createFile(name,content)だと「種類」がバイナリファイルとなってしまい、そのままでは開くことができません。

ファイルの種類を指定するにはcreateFile(name,content, mimeType)でmimeTypeを指定します。
mimeTypeについては後述。

function myFunction() {
  // ファイルを作るフォルダを取得する
  var folder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
  
  // ファイルを作成する
  folder.createFile('サンプルファイル', 'Hello Sample!!');
}

mimeTypeについて

ファイル作成時にMimeTypeを指定できます。MimeTypeには下記の種類があります。

  • BMP
  • CSS
  • CSV
  • FOLDER
  • GIF
  • GOOGLE_APPS_SCRIPT
  • GOOGLE_DOCS
  • GOOGLE_DWAWINGS
  • GOOGLE_FORMS
  • GOOGLE_SHEETS
  • GOOGLE_SITES
  • GOOGLE_SLIDES
  • HTML
  • JAVASCRIPT
  • JPEG
  • MICROSOFT_EXCEL
  • MICROSOFT_EXCEL_LEGACY
  • MICROSOFT_POWERPOINT
  • MICROSOFT_POWERPOINT_LEGACY
  • MICROSOFT_WORD
  • MICROSOFT_WORD_LEGACY
  • OPENDOCUMENT_GRAPHICS
  • OPENDOCUMENT_PRESENTATION
  • OPENDOCUMENT_SPREADSHEET
  • OPENDOCUMENT_TEXT
  • PDF
  • PLAIN_TEXT
  • PNG
  • RTF
  • SVG
  • ZIP

MimeTypeはcreateFile()の第3引数に設定します。

function myFunction() {
  // ファイルを作るフォルダを取得する
  var folder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
  
  // ファイルを作成する(作成時にMimeTypeを指定する)
  folder.createFile('サンプルファイル', 'Hello Sample!!', MimeType.HTML);
}

ファイルの取得

スポンサーリンク

ファイルを取得するにはgetFiles()メソッドを使用します。getFileById(id)以外はファイルの一覧(FileIterator)が取得できます。getFileById(id)は単一ファイル(File)が取得できます。

  • getFiles()
  • getFilesByName(name)
  • getFilesByType(mimeType)
  • getFileById(id)

基本の構文

指定のフォルダに格納されているファイルの一覧を取得する場合は下記の通りに実行します。Folderオブジェクトを生成してからgetFiles()を実行します。
getFiles()の実行結果はFileIteratorとなります。

function myFunction() {
  // ファイルを作るフォルダを取得する
  var folder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");

  // ファイルの一覧を取得する
  var files = folder.getFiles();
  while (files.hasNext()) {
       Logger.log(files.next().getName());
  }
}

ファイルの検索

ファイルを検索するにはsearchFiles(params)を使用します。
paramsには検索クエリ(Google Drive SDK documentation)を使用します。File query termsの章にファイル検索に関する検索クエリが記載されています。

function myFunction() {
  // ファイルを作るフォルダを取得する
  var folder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");

  // ファイルを検索する  
  var files = folder.searchFiles('title = "サンプルファイル"');
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
  }
}

ファイルの削除

スポンサーリンク

ファイルを削除するにはremoveFile(child)を使用します。
removeFile(child)は削除したいファイルが格納されているフォルダのオブジェクトから実行します。
引数のchildには削除したいファイルのFileオブジェクトを指定します。

function myFunction() {
  // ファイルを作るフォルダを取得する
  var folder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
  
  // 削除対象ファイルを取得
  var delFile = DriveApp.getFileById("1234567890");
  
  // ファイルを削除
  folder.removeFile(delFile);
}

まとめ

前編では作成、取得、検索、削除についてまとめてみました。
ファイルについても何か機能を持つプログラムを作るには要件を満たせそうです。

ファイルの操作については、まだ「コピーを作成する」「ファイル名を変更する」などできることがあるようなのでそちらについても勉強がてらまとめてみようと思います。

ファイル操作は複数の階層に跨って行う場合は再帰処理と組み合わせると非常に効率よくプログラムを組むことができます。
再帰処理についても紹介しておりますので、そちらもご参考にしてください。