Googleドライブのルート直下に作成されるGASファイルを特定フォルダに移動させるスクリプト

Googleドライブで特定のフォルダに移動した後、Google Apps Scriptを新規作成しても、そのフォルダには格納されず、マイドライブのルートに配置されます。

そこで、マイドライブのルート直下に作成されるGASファイルを特定フォルダに移動させるスクリプトを紹介します。

GoogleドライブからGASファイルを作成

Google Apps Script(GAS)の新しいファイルを作成するには、GASのプロジェクト画面から作成する以外にGoogleドライブで作成する方法があります。

Googleドライブの画面にアクセスし、左上にある「新規」ボタンをクリックし、「その他>Google Apps Script」を選択すると、GASのファイルが作成されます。

GoogleドライブからGoogle Apps Script(GAS)のスクリプトファイルを新規作成する方法

Googleドライブではドキュメントやスプレッドシート、スライドなどのオフィス系に加え、フォームやGoogle Colaboratoryなども追加可能です。

そのため、色々なファイルを追加する場合は、Apps Scriptの管理画面よりもGoogleドライブのほうが便利なケースがあります。

特定フォルダでGASを作成してもマイドライブ直下に配置

しかし、GoogleドライブでGoogle Apps Script(GAS)を新規作成した場合には注意すべき点があります。

それは、Googleドライブのどのフォルダ階層でGASを新規追加しても、そのフォルダ内には作られず、マイドライブのルート直下に配置される点です。

例えば、「GAS格納先」というフォルダを用意して、そこに移動した状態で、先程のように新規ボタンから「その他>Google Apps Script」を選択してGASファイルを作成します。

Googleドライブの特定フォルダに移動した状態でGoogle Apps Scriptを作成しても、そのフォルダ内にGASスクリプトファイルは配置されない

しかし、このようにGoogleドライブの特定フォルダに移動した状態でGASファイルを作っても、「GAS格納先」フォルダにはファイルは作成されません。

GoogleドライブからGoogle Apps Script新規作成時に特定のフォルダに格納させることは不可能

実際には、Googleドライブのルートドライブである「マイドライブ」直下にGASファイルが生成されています。

Googleドライブから新規作成したGoogle Apps Scriptファイルはマイドライブ直下のルートフォルダに作成されて配置

そのため、新規作成時にスクリプトファイルを特定フォルダに作成することはGoogleドライブの仕様上できません。

手動で移動させる以外のGASによる対処方法

GoogleドライブからGoogle Apps Scriptファイルを新規作成する場合、残念ながらマイドライブ直下に配置されます。

もし、GASを管理するためのフォルダに配置したい場合はGoogleドライブで手動移動させる対応が必要です。

ただ、毎回GASのスクリプトファイルを作成した後、スクリプトファイルを別のフォルダに移動させるのは手間がかかります。

そうした場合の解決策として、スクリプトファイルを特定フォルダに移動させるGASスクリプトを用意して実行させます。

GASにはfile.moveTo(フォルダID)という特定ファイルを引数で指定したフォルダに移動させるメソッドがあるので、このmoveToを利用してスクリプトを作成します。

マイドライブ直下のGASファイルを別フォルダに移動するコード

実際にGoogleドライブのルートフォルダ「マイドライブ」直下にあるGoogle Apps Scriptファイルを別フォルダに移動するコードを紹介します。

Googleドライブのマイドライブ直下に存在するGoogle Apps Scriptのスクリプトファイルを特定フォルダに移動させるGASスクリプト
//GoogleDriveのルートフォルダにあるGASファイルを特定フォルダに移動する関数
function moveRootScriptFilesToFolder() {
  //移動先のGoogleドライブのフォルダID(URL欄に表示されるIDを記入)
  const moveToFolderId = '*****************************';
  //Googleドライブのルートフォルダから存在する全ファイルを取得
  const files = DriveApp.getRootFolder().getFiles();
  //取得した全ファイルを繰り返し処理
  while(files.hasNext()){
    //ファイルデータを取得し、ファイルタイプを取得
    let file = files.next();
    let fileType = file.getMimeType();
    //ファイルタイプがGASと判定した場合に、移動先のフォルダに移動
    if(fileType.indexOf('google-apps.script')>0){
      file.moveTo(DriveApp.getFolderById(moveToFolderId));
      console.log(file.getName() + 'を移動しました。');
    } 
  }
}

4行目でGASスクリプトファイルを移動先のフォルダIDを指定します。

※フォルダIDはGoogleドライブで当該フォルダ階層に移動した際に、URL欄に表示されているIDです。

ルートドライブからすべてのファイルを取得し(6行目)、whileループですべてのファイルタイプを確認し、GASスクリプトファイルの場合は、当該フォルダに移動させる処理を繰り返します(8~17行)。

このGASスクリプトを実行することでGoogleドライブのマイドライブ直下にあるGASファイルを、GASを管理するためのフォルダに移動させることが可能です。

トリガー実行による定期実行でGASファイル整理

先程紹介したGoogle Apps ScriptファイルをGoogleドライブの別フォルダに移動させるスクリプトを毎回手動で実行するのも面倒です。

そこで、先程のGASスクリプトの関数をトリガー実行で定期実行すれば、GASスクリプトファイルを移動が完全自動化できます。

先程のGASスクリプトのIDEで左メニューにあるトリガー(時計マーク)を選択し、トリガーを追加します。

Google Apps Script(GAS)のスクリプトエディタの左メニューの「トリガー」を選択し、右下に表示される「トリガー追加」ボタンをクリック

定期実行するタイミングは最短1分単位の繰り返し実行が可能です。

しかし、あまり高頻度に実行するとGAS処理の負荷も高まるため、日次処理として、深夜に実行するのがおすすめです。

Googleドライブのルートドライブに配置されたGoogle Apps ScriptファイルをGAS管理用フォルダに移動するスクリプトを定期実行することで、ファイル管理が自動化

実行する関数を指定し、イベントのソースを「時間主導型」にし、日次処理のため日ベースのタイマーで、好きな時間帯を選び、保存ボタンを押します。

このようにGASスクリプトファイルを移動させるGASスクリプトを定期実行すれば、手動で移動させる必要なく、管理コストをへらすことができます。

まとめ・終わりに

今回、Google Apps Scriptを新規作成時に、Googleドライブのマイドライブ直下に配置されるため、特定フォルダに移動させる処理スクリプトを解説しました。

残念ながら、GoogleドライブではGASファイルを作成時にマイドライブに作られるため、別フォルダでスクリプトファイルを管理する場合、移動させる必要があります。

手動で移動させるのは面倒なので、マイドライブに存在するGASスクリプトファイルを別フォルダに移動させるコードを用意しました。

このGASコードを定期的に自動実行すれば、マイドライブにたくさんのスクリプトファイルがあふれず、特定フォルダに整理可能です。

ぜひ、GASスクリプトファイルをフォルダに分けて管理したい場合にご活用下さい。