2015年9月29日火曜日

Google Apps Script : ファイルとフォルダ

基本となるファイルとフォルダの列挙や操作について触れてみます
ファイル、フォルダまわりを扱うにはDriveAppを利用します

■列挙
 ・ファイルの単純な列挙
  DriveApp.getFiles() : FileIteratorという形で受け取ります

  基本的な列挙のコード
  var objFiles = DriveApp.getFiles();
  var objFile;
  while (objFiles.hasNext()){
    objFile = objFiles.next();
    Logger.log(objFile.getName());
  }
  →Googleドライブ内にある全てのファイルが列挙されます

 ・フォルダの単純な列挙
  DriveApp.getFolders() : FolderIteratorという形で受け取ります

  基本的な列挙のコード
  var objFolders = DriveApp.getFolders();
  var objFolder;
  while (objFolders.hasNext()){
    objFolder = objFolders.next();
    Logger.log(objFolder.getName());
  }
  →Googleドライブ内にある全てのフォルダが列挙されます

 ・指定のフォルダについての列挙
  ファイル、フォルダ共に指定のフォルダに属した物のみを対象に列挙できます
  objFolder.getFiles()
  objFolder.getFolders()
  →対象のフォルダ(objFolder)に、getFiles/getFoldersをする事で列挙ができます

 ・ファイルのタイプを限定して列挙
  DriveApp.getFilesByType(mime type) : タイプを引数に指定

  例えば、Spreadsheetのファイルを列挙する場合は以下のようにします
  DriveApp.getFilesByType(MimeType.GOOGLE_SHEETS);
   画像のようにMimeType.まで入力すると候補が表示されるので、
   この中から選択する形で覚えれば良いと思います


■取得
 列挙の中では、next()によって1つのファイル/フォルダを取得していましたが、IDや名前を使って取得ができます

 ・ファイルの取得
  DriveApp.getFileById(id) : IDから特定の1つのファイル受け取ります
  DriveApp.getFileByName(name) : 名前からFileIteratorという形で受け取ります

 ・フォルダの取得
  DriveApp.getFolderById(id) : IDから特定の1つのフォルダを受け取ります
  DriveApp.getFolderByName(name) : 名前からFolderIteratorという形で受け取ります

  →名前の場合は、同じ名前の物が存在しうるので列挙と同じ形の受け取りとなります

 ・フォルダの取得(マイドライブ)
  DriveApp.getRootFolder() : マイドライブ(ルート)を受け取ります


■名前の変更
 ・ファイル名の変更
  objFile.setName(name) : 引数に指定した名前に変更します

 ・フォルダ名の変更
  objFolder.setName(name) : 引数に指定した名前に変更します


■新規作成
 ・フォルダの作成
  DriveApp.createFolder(name) : 引数に指定した名前でマイドライブにフォルダを作成します
  objFolder.createFolder(name) : 引数に指定した名前でobjFolderにフォルダを作成します


■複製(コピー)
 ・ファイルの複製
  objFile.makeCopy() : 引数の有無によって名前や複製先を指定できます

  targetFolderへ"複製されたファイル"という名前で複製する例
  objFile.makeCopy("複製されたファイル", targetFolder);


■削除(ゴミ箱へ送る)
 ・ファイルの削除
  objFile.setTrashed(true) : objFileを削除します

 ・フォルダの削除
  objFolder.setTrashed(true) : objFolderを削除します

-----
以上でファイルとフォルダの列挙、基本的な操作ができると思います。

0 件のコメント:

コメントを投稿