【GAS】Googleドライブ内のファイルを移動させよう

Yan WongによるPixabayからの画像

Googleドライブ内のファイル移動を自動化するメリット

 GoogleAppsScriptを使ってアプリを作成すると、必ずGoogleドライブの「マイドライブ」へ作成されます。これは、フォルダでしっかりとファイル管理している場合、大変困ります。そんな時、ファイルを作成する時点で指定したフォルダへ移動するようにプログラムすれば問題解決だと気づき、今回の記事を書くことにしました。

自動化する前の事前準備

 さて、プログラムを書く前に事前に準備するものがあります。そもそも、「マイドライブ」から別の指定したフォルダへ移動するとき、人が操作する場合、目で見て判断して移動が可能です。しかし、プログラムに同じ動作をさせる場合は、当然見て判断ができないため、何かの印を基準に移動する必要があります。
 Googleの場合は、一つ一つのフォルダにIDがつけられていています。IDは、Googleドライブを開いているときに下図のアドレズバーを見てください。

 https://drive.google.com/drive/folders/************ ←ここの「***」がIDになります。

 ここを記録しておくことが事前準備になります

例えば、スライド等のアプリを活用したファイルは、フォルダと異なり、edit~というアドレスが追加されています。下記の「*****」部分を記録しておいてください。

https://docs.google.com/presentation/d/*****/edit#slide=id.p

プログラムを作成していこう

リファレンスマニュアルのサンプルコードを実行して確認しよう

 コードの使い方が初めての場合、リファレンスマニュアルのサンプルを動かすことをお勧めします。今回は、Googleドライブについてなので下記のコードを実行してみましょう。
 コードの解説
 変数の「files」にドライブ内(指定していないのでマイドライブ)のファイル名を保存します。Whileは条件がFalseになるまでfile変数にデータを入れてログに出力します。
 実際にコピー&ペーストで実行してみてください。

Class FileIteratorの説明

  getFiles():Gets a collection of all files in the user's Drive.
   ※ドライブ内のファイルを得る
  hasNext():Determines whether calling next() will return an item
   ※次を読み出して存在しているかを確認
  next():Gets the next item in the collection of files or folders.
      Throws an exception if no items remain.
   ※フォルダーかファイルの次のアイテムを確認します。なければスルー ;

function myFunction() {
  // Log the name of every file in the user's Drive.
  var files = DriveApp.getFiles();
  while (files.hasNext()) {
    var file = files.next();
    Logger.log(file.getName());
}  
}

moveTo(destination)の説明

 ファイルを移動するにはFileクラスの moveTo メゾットを使うとよさそうです。この解説をします。リファレンスマニュアルには、

Moves this item to the provided destination folder.
The current user must be the owner of the file or have at least edit access to the item's current parent folder in order to move the item to the destination folder.

 と記載されています。要約すると、ファイルを指定したフォルダへ移動します。ただし、権限が必要です。ということみたいです。ゆえに、これから皆様が行う場合は、あくまで個人のGoogleドライブ内のファイル移動ということになりますので注意してください。他人までできたらハッキングですよね。

 moveTo(destination)のdestinationには、親になるフォルダを指定します。

コード

 では、さきほどの知識を得たうえでプログラムを作成していきます。プログラムの基本は、決まっている数値を固定の変数で定義して利用するという流れが一般的だと思うので、constを使って、定義しています。このコードは、コピー&ペーストで実行しても動きませんので、かならず、「*****」部分にご自分の値を入れるようにしてください。

 GASを実行した際の認証については、こちらの記事をお読みください。 リンク先→ こちらをクリック

変数の解説

fileID:ファイルのIDを代入している
folderID:フォルダのIDを代入している
file:Googleドライブ内にあるfileIDの情報をfileへ代入
folder:Googleドライブ内にあるfolderIDの情報をfolderへ代入

最後にFileクラスのmoveToを使って、先ほどから入力された情報を基に移動させます

function myFunction() {
  const fileID = "****";
  const folderID = "****";

  //サンプルでは「var」で宣言しているが、自分で作成する場合letの方が良いです
  let file = DriveApp.getFileById(fileID);
  let folder = DriveApp.getFolderById(folderID);

  //移動処理
  file.moveTo(folder);
}

まとめ

 この作業だけであれば、自動化する必要は全くないといってもよいでしょう。しかし、GASを使ってこれから様々な取り組みをしていくうえで必要不可欠な内容になると思います。理由は、初めに記載したものになります。このプログラムでは、GoogleドライブのクラスとFileクラスを利用します。学習するにはちょうど良い内容なのかなと思います。

Follow me!

【GAS】Googleドライブ内のファイルを移動させよう” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です