2014/12/02

Google Apps ScriptでDriveのファイルの有無を判定する

Google ドライブの概念として同じファイル名のファイルを同じディレクトリに作成することができます。
Google ドライブ上ではすべてのフォルダやファイルにユニークなIDが付与されているので、フォルダ名やファイル名はあくまでも利用者にわかりやすくするためのもでしかないためです。

ですが、WindowsやMac上でGoogle ドライブのクライアントアプリを使って同期している場合にはそういうわけにはいかず、Google ドライブ上では同じファイル名が複数同じフォルダに存在していることもありますが、WindowsやMacの同期先のフォルダではexample.txt、example(1).txt、example(2).txt ・・・このようにイケてない感じで表示されてしまいます。
ローカル上では(1)などが付与されて表示されますが、Googleドライブ上のファイル名は変更されません。

そこで、Google Apps Scriptであるフォルダーの配下に、あるファイル名のファイルが格納されているかを確認するスクリプトを書いてみました。

var LIST = DocsList.getFolderById("xxxxxxxxxxx").getFiles();
var fileName = "example.txt"

for(var i in LIST){
  if(LIST[i].getName() == fileName){
    Logger.log("ありました!");
  }

}

あるフォルダー(フォルダのIDを調べる必要があります)の配下に格納されているファイル名一覧をLISTの配列に格納し、fileNameで指定したファイル名がヒットした場合if 文の中の処理が動きます。

もちろん再帰的にすべてのフォルダーを対象にすることもできます。
これで(1)、(2)・・・というようなファイルが乱立することが、少なくなるといいな;-p