フォルダにファイルを追加する— addFile()
※『Googleドライブのショートカット機能追加と複数フォルダ所属機能の終了』の記事で記載の通り、2020年9月30日をもって本記事で紹介しているaddFileは非推奨となりました。
今回紹介するメソッドは、Googleドライブのフォルダにファイルを追加する方法をご紹介します。今回の記事では、ファイルを追加する方法だけでなく、Googleドライブでのフォルダやファイルの格納される仕組みについてもこの投稿で少しご紹介したいと思っています。
Googleドライブのフォルダやファイルは、Windowsなどのフォルダやファイルと考え方が大きく違う部分があります。たとえば、Windowsなどのフォルダ構造では、一つのファイルやフォルダを複数のフォルダ内に格納させることはできません。そのため、ショートカットを使ったりして他のフォルダに入っているファイル等へ簡単にアクセスができるようにしたり、運用面で工夫が必要です。
ご存知ない方も少なくないと思いますが、Googleドライブでは、1つのフォルダやファイルを複数のフォルダに格納することができます。フォルダやファイルのショートカットやコピーを複数格納するわけではなく、実際のフォルダやファイルを複数のフォルダに格納することができます。Googleドライブでは、ファイルの詳細を確認すると、保存されているフォルダが確認できます。
Googleドライブ上で手動で複数フォルダに保存するやり方としては、ファイルを移動させるときとほぼ同じやり方で実現することができます。
この他にも、Googleドライブでは、同じフォルダ名やファイル名を同一フォルダ内に格納することができます。このことから推察すると、Googleドライブのファイルの認識方法はファイル名ではなく、ファイルIDベースで行われているのではないかと思います。公式文書ではそのような説明を確認したことはないので私の勝手な推察ではありますが、GoogleドライブではWindows等とこのような違いを持っています。コンピューターにとってはIDで区別できるのでしょうが、人間には同じファイル名では区別がしづらいので同一の名前でファイルを作成することはあまりおすすめではありませんが。
さて、前置きが長くなりましたが、ご紹介するaddFile()メソッドはこの機能をプログラム的に行う処理になります。
addFileはDriveApp.addFile()という使い方と、Folder.addFile()という使い方の2つあります。これは、フォルダを指定するかしないかという違いだけになりまして、DriveApp.addFile()の場合は、フォルダを指定しない方法ですのでマイドライブにファイルは追加されます。Folder.addFile()の場合は、Folderで指定されたフォルダへファイルは追加されます。
『 引数に入れる値 』
addFile(child)
//マイドライブにファイルを追加するプログラム function sampleCodeForDriveAppAddFile1() { var fileId = ""; //ファイルIDを指定 var child = DriveApp.getFileById(fileId); DriveApp.addFile(child); }
『 変数の説明 』
fileId = マイドライブに追加したいファイルIDを指定
child = マイドライブに追加したいファイル
ファイルIDを確認する方法は、いくつかありますが、簡単なのはファイルを右クリックして「共有可能なリンクを取得」で取得できるURL「https://drive.google.com/open?id=1ZDvGxjJxpIWDb0UGpLjpuZE0tLT7_rIVWH0bQPlxop4」の赤文字部分がID部分になります。
スクリプトができたら▶ボタンでプログラムを実行してみましょう。追加予定のファイルはマイドライブ以外に保存しておいて下さい。実行が完了するとマイドライブにIDで指定したファイルが追加していると思います。マイドライブに移動して確認するか、ファイルの詳細情報を確認してみて下さい。詳細情報が表示されていない場合は、下記スクリーンショットのアイコンをクリックすると表示することができます。
詳細情報を確認すると、マイドライブにファイルが追加されていることが確認できると思います。
//指定したフォルダにファイルを追加するプログラム function sampleCodeForDriveAppAddFile2() { var folderId = ""; //追加先のフォルダIDを指定して下さい var folder = DriveApp.getFolderById(folderId); var fileId = ""; //ファイルIDを指定 var child = DriveApp.getFileById(fileId); folder.addFile(child); }
『 変数の説明 』
folderId = 追加先のフォルダIDを指定
folder = 追加先のフォルダ
fileId = 追加したいファイルIDを指定
child = 追加したいファイル
フォルダIDを確認する方法は、いくつかありますが、簡単なのはフォルダを開いた時のURL「https://drive.google.com/drive/folders/1wSmjp4v1S9lEg_PpsouIqLlMqOYu6Bhg」の赤文字部分がID部分になります。
サンプルコード2は指定したフォルダにファイルを追加するコードになります。追加予定のファイルは追加先のフォルダに格納していない状態で実行して下さい。実行が完了するとファイルの詳細情報からもパスにフォルダが追加されたことが確認できると思います。
まとめ
今回はGoogleドライブ上のフォルダ構成の仕組みの説明と、addFile()メソッドの使い方をスクリーンショットとサンプルコードで説明をしました。Google Apps Scriptでファイルを他のフォルダに移動させる時に使うコードになりますが、addFileだけではファイルを複数のフォルダに所属させるだけなので、移動は完了しません。移動させたい場合はremoveFile()メソッドを併用して移動元のフォルダ情報を削除する必要があります。そのやり方はこちらの投稿で説明を行います。