初心者でもわかるGoogle Apps Script活用のススメ

GASでフォルダにファイルを追加するaddFile(現在非推奨)

フォルダにファイルを追加する— addFile()

※『Googleドライブのショートカット機能追加と複数フォルダ所属機能の終了』の記事で記載の通り、2020年9月30日をもって本記事で紹介しているaddFileは非推奨となりました。

今回紹介するメソッドは、Googleドライブのフォルダにファイルを追加する方法をご紹介します。今回の記事では、ファイルを追加する方法だけでなく、Googleドライブでのフォルダやファイルの格納される仕組みについてもこの投稿で少しご紹介したいと思っています。

Googleドライブのフォルダやファイルは、Windowsなどのフォルダやファイルと考え方が大きく違う部分があります。たとえば、Windowsなどのフォルダ構造では、一つのファイルやフォルダを複数のフォルダ内に格納させることはできません。そのため、ショートカットを使ったりして他のフォルダに入っているファイル等へ簡単にアクセスができるようにしたり、運用面で工夫が必要です。

ご存知ない方も少なくないと思いますが、Googleドライブでは、1つのフォルダやファイルを複数のフォルダに格納することができます。フォルダやファイルのショートカットやコピーを複数格納するわけではなく、実際のフォルダやファイルを複数のフォルダに格納することができます。Googleドライブでは、ファイルの詳細を確認すると、保存されているフォルダが確認できます。

上記画像では単一フォルダに保存したファイルと複数フォルダに保存したファイルの詳細情報を比較のために横並びにしました。赤枠で囲った部分で確認ができるように、パスというところにフォルダが一つ増えていることが確認できます。このように、Googleドライブでは1つのフォルダを複数のフォルダに格納することができるのです。所属できるフォルダ数に上限数があるのかどうかは確認していないのでわかりませんが、2つ以上のフォルダに保存することもできます。

Googleドライブ上で手動で複数フォルダに保存するやり方としては、ファイルを移動させるときとほぼ同じやり方で実現することができます。

上記スクリーンショット内にも記載しましたが、移動先のフォルダまで到達したら、Ctrlキーを押すと「ここに移動」という表記が「ここに追加」という表記に変わります。「ここに追加」をクリックすると元のフォルダからは移動されずに複数のフォルダに所属させることができます。Windowsの場合はファイルはフォルダに実際に入っている(ファイルは1つなので複数フォルダに入れることはできない)イメージですが、Googleドライブの場合は、ファイルに所属フォルダのラベルをつけている(ファイルは1つだが、ラベルはいくらでもつけられる)イメージに近いのかなとは私は勝手に解釈しています。

この他にも、Googleドライブでは、同じフォルダ名やファイル名を同一フォルダ内に格納することができます。このことから推察すると、Googleドライブのファイルの認識方法はファイル名ではなく、ファイルIDベースで行われているのではないかと思います。公式文書ではそのような説明を確認したことはないので私の勝手な推察ではありますが、GoogleドライブではWindows等とこのような違いを持っています。コンピューターにとってはIDで区別できるのでしょうが、人間には同じファイル名では区別がしづらいので同一の名前でファイルを作成することはあまりおすすめではありませんが。

さて、前置きが長くなりましたが、ご紹介するaddFile()メソッドはこの機能をプログラム的に行う処理になります。

addFileはDriveApp.addFile()という使い方と、Folder.addFile()という使い方の2つあります。これは、フォルダを指定するかしないかという違いだけになりまして、DriveApp.addFile()の場合は、フォルダを指定しない方法ですのでマイドライブにファイルは追加されます。Folder.addFile()の場合は、Folderで指定されたフォルダへファイルは追加されます。

        1. addFile(child)

『 引数に入れる値 』

addFile(child)

サンプルコード1
//マイドライブにファイルを追加するプログラム
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で指定したファイルが追加していると思います。マイドライブに移動して確認するか、ファイルの詳細情報を確認してみて下さい。詳細情報が表示されていない場合は、下記スクリーンショットのアイコンをクリックすると表示することができます。

詳細情報を確認すると、マイドライブにファイルが追加されていることが確認できると思います。

サンプルコード2
//指定したフォルダにファイルを追加するプログラム
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()メソッドを併用して移動元のフォルダ情報を削除する必要があります。そのやり方はこちらの投稿で説明を行います。

Exit mobile version