技術ブログ

GASでGoogle Driveを自動整理!時間短縮テクニック

/ 初心者向け

GASでGoogle Driveを自動整理!時間短縮テクニック

Google Driveのファイル整理、GASで劇的に効率化!

「いつの間にかGoogle Driveがカオス状態…」「あのファイルどこだっけ?」

そんな経験はありませんか?Google Driveのファイル整理は、日々の業務や学習において避けては通れない作業ですが、手作業で行うのは非常に時間がかかります。そこで今回は、Google Apps Script (GAS) を使って、Google Driveのファイル整理を自動化する強力なテクニックをご紹介します。GASを使えば、ファイル移動、フォルダ作成、リネーム、さらには特定の条件に基づいた自動整理まで、様々な操作をプログラムで実現できます。

なぜGASでGoogle Driveを自動整理するのか?

GASは、Google Workspaceの各種サービス(Gmail, Google Sheets, Google Driveなど)を連携させて自動化できる、JavaScriptベースのスクリプト言語です。Google Driveの整理にGASを活用するメリットは以下の通りです。

  • 時間の大幅な節約: 手作業で行っていた単純作業を自動化することで、貴重な時間を他の重要な業務に充てられます。
  • ミスの削減: 手作業では起こりがちな入力ミスや誤操作を防ぎ、正確な整理が可能です。
  • 定型作業の効率化: 定期的なファイル整理や、特定のルールに基づいた分類などを自動で行えます。
  • Google Workspaceとの連携: Google Sheetsでリストを作成し、そのリストに基づいてファイルを整理するといった高度な連携も可能です。

初心者でもできる!GASでファイル整理を自動化する基本

まずは、GASを使ってGoogle Driveのファイルを操作する基本的な方法を学びましょう。GASエディタを開き、以下のコードを参考にしながら試してみてください。

1. 特定のフォルダにファイルを移動する

例えば、「請求書」というフォルダに「2023年」と「2024年」というサブフォルダを作成し、それぞれの年月に応じてファイルを自動で移動させるスクリプトを作成してみましょう。まず、移動元と移動先のフォルダIDを取得する必要があります。

Google Driveでフォルダを開き、URLの末尾にある文字列がフォルダIDです。

function moveFilesToYearlyFolder() {
  const sourceFolderId = 'YOUR_SOURCE_FOLDER_ID'; // ファイルが元々あるフォルダID
  const destinationBaseFolderId = 'YOUR_DESTINATION_BASE_FOLDER_ID'; // 年別フォルダを作成する親フォルダID
  const year = new Date().getFullYear(); // 現在の年を取得

  const sourceFolder = DriveApp.getFolderById(sourceFolderId);
  const destinationBaseFolder = DriveApp.getFolderById(destinationBaseFolderId);

  // 移動先の年別フォルダが存在しない場合は作成
  let destinationYearFolder;
  const folders = destinationBaseFolder.getFoldersByName(year.toString());
  if (folders.hasNext()) {
    destinationYearFolder = folders.next();
  } else {
    destinationYearFolder = destinationBaseFolder.createFolder(year.toString());
  }

  // ソースフォルダ内のファイルをループ処理
  const files = sourceFolder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    const fileName = file.getName();

    // ファイル名から年月を判定し、移動
    // 例: '20231225_invoice.pdf' のようなファイル名
    const match = fileName.match(/^(\d{4})(\d{2})_/);
    if (match) {
      const fileYear = match[1];
      const fileMonth = match[2];
      const fileFolderName = `${fileYear}/${fileMonth}`;

      // 月別フォルダを作成または取得
      let destinationMonthFolder;
      const monthFolders = destinationYearFolder.getFoldersByName(fileMonth);
      if (monthFolders.hasNext()) {
        destinationMonthFolder = monthFolders.next();
      } else {
        destinationMonthFolder = destinationYearFolder.createFolder(fileMonth);
      }

      file.moveTo(destinationMonthFolder);
      Logger.log(`'${fileName}' を '${destinationMonthFolder.getName()}' へ移動しました。`);
    } else {
      Logger.log(`'${fileName}' は移動対象外です。`);
    }
  }
}

このスクリプトでは、ファイル名に YYYYMM_ のような形式で日付が含まれていることを前提としています。ファイル名規則に合わせて正規表現 (match) の部分を修正してください。

2. 特定の条件でフォルダを作成・リネームする

例えば、毎日作成されるレポートファイルを、日付ごとにフォルダ分けし、さらにフォルダ名を「YYYY-MM-DD レポート」のように整形したい場合などが考えられます。

function organizeReports() {
  const reportsFolderId = 'YOUR_REPORTS_FOLDER_ID'; // レポートファイルがあるフォルダID
  const today = new Date();
  const year = today.getFullYear();
  const month = ('0' + (today.getMonth() + 1)).slice(-2);
  const day = ('0' + today.getDate()).slice(-2);
  const formattedDate = `${year}-${month}-${day}`;
  const newFolderName = `${formattedDate} レポート`;

  const reportsFolder = DriveApp.getFolderById(reportsFolderId);

  // フォルダが存在しない場合のみ作成
  const existingFolders = reportsFolder.getFoldersByName(newFolderName);
  if (!existingFolders.hasNext()) {
    const createdFolder = reportsFolder.createFolder(newFolderName);
    Logger.log(`フォルダ '${newFolderName}' を作成しました。`);

    // レポートフォルダ内のファイルを新しいフォルダへ移動
    const files = reportsFolder.getFiles();
    while (files.hasNext()) {
      const file = files.next();
      file.moveTo(createdFolder);
      Logger.log(`'${file.getName()}' を '${createdFolder.getName()}' へ移動しました。`);
    }
  } else {
    Logger.log(`フォルダ '${newFolderName}' は既に存在します。`);
  }
}

GASでの自動実行(トリガー設定)

作成したGASスクリプトは、手動で実行することもできますが、自動実行させることで真価を発揮します。GASエディタの左側にある時計アイコン(トリガー)をクリックし、「トリガーを追加」から実行したい関数と実行頻度(毎日、毎時など)を設定しましょう。

さらに高度な整理テクニック

  • Google Sheetsとの連携: Google Sheetsにファイル一覧と整理ルールをリスト化し、GASでそのリストを読み込んでファイル操作を行う。
  • ファイル名の変更: 特定のファイル名を一括で変更する。
  • 重複ファイルの検出と削除: 同じファイル名・内容のファイルを検出し、不要な方を削除する(注意が必要!)。
  • 最終更新日や作成日による整理: ファイルのメタデータを利用して整理する。

まとめ

Google Driveのファイル整理は、GASを活用することで驚くほど効率化できます。最初は少し難しく感じるかもしれませんが、今回ご紹介した基本から始め、徐々に複雑な処理に挑戦していくことで、あなたのGoogle Driveは常に整理された状態を保てるようになるでしょう。ぜひ、GASで快適なGoogle Driveライフを実現してください!

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る