[GAS][Googleドライブ]ファイル名を一括変換するツール その1

GAS

どうも。つじけ(tsujikenzo)です。このシリーズでは 「Googleドライブのファイル名を一括変換しよう」 について、全3回でご紹介します。

今日は第1回目で、「Googleドライブからファイル名とIDを取得しよう」 です。

はじめに

最近はリモートワークが浸透し、Googleドライブを活用する機会も多くなりました。

今回は、GASでGoogleドライブのファイル名を一括変換する方法をご紹介します。

GAS(Google Apps Script)ってなに?という方は、ノンプロ研のGAS初級講座受講をおすすめします。

プロジェクトの流れ

今回のプロジェクトは、大きく分けて、3段階あります。

とくにむずかしいことはありませんが、全体の流れを把握しておきましょう。

  1. ファイル名一覧を取得してスプレッドシートに貼り付ける
  2. 変更するファイル名をスプレッドシートに準備する
  3. ファイル名を変更する

事前準備

フォルダの準備

まずは、Googleドライブに、作業用フォルダを準備しましょう。

フォルダ名はなんでも構いません。今回は 「Rename用フォルダ」 としました。 

サンプルとして、PDFをいくつかアップロードしましょう。 

スプレッドシートの準備

新規スプレッドシートを作成します。(保存場所はどこでもかまいません。)

ファイル名はなんでも構いませんが、今回は 「Rename用シート」 としました。 

コンテナバインドスクリプトの準備

コンテナバインドスクリプトを作成します。プロジェクト名はなんでもかまいませんが 「Rename用」 としておきます。 

Googleドライブからファイル名を取得する

まずは、Rename用フォルダを取得します。フォルダIDを確認しましょう。 

https://drive.google.com/drive/folders/{FOLDER ID}

ここからは、スクリプトエディタで作業していきます。

フォルダ内のファイルを、ファイルオブジェクトとして取得し、while文を使って、ファイルIDとファイル名を2次元配列に格納します。

  const folder = DriveApp.getFolderById('FOLDER ID');

  const files = folder.getFiles();

  const fileArray = [];

  while (files.hasNext()) {
    const file = files.next();
    const id = file.getId();
    const name = file.getName().replace(/\..+$/, "");
    fileArray.push([id,name]);
  }

  console.log(fileArray);

初回実行時は、認証を求められますので、各自でご対応お願いいたします。

コードを実行すると、このように、[ファイルID、ファイル名]という1次元配列を持った、2次元配列のログが出力されます。 

スプレッドシートに貼り付ける

この2次元配列を、スプレッドシートに貼り付けるコードはこちらです。

  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange(1,1,fileArray.length,fileArray[0].length);
  range.setValues(fileArray);

コードを実行すると、スプレッドシートに貼り付けされます。 

今回は、ここまでです。

本日のコード全文はこちらです。

function myFunction() {

  //フォルダからファイルを取得する
  const folder = DriveApp.getFolderById('FOLDER ID');
  const files = folder.getFiles();
  const fileArray = [];

  //2次元配列の作成
  while (files.hasNext()) {
    const file = files.next();
    const id = file.getId();
    const name = file.getName().replace(/\..+$/, "");
    fileArray.push([id, name]);
  }

  //スプレッドシートに貼り付ける
  const sheet = SpreadsheetApp.getActiveSheet();
  const range = sheet.getRange(1, 1, fileArray.length, fileArray[0].length);
  range.setValues(fileArray);

}

まとめ

以上で、Googleドライブからファイル名とIDの一覧を取得して、スプレッドシートに貼り付けしました。

次回は、「変換用ファイル名をスプレッドシートで準備しよう」 についてお届けします。

このシリーズの目次

  1. [GAS][Googleドライブ]ファイル名を一括変換するツール その1
  2. [GAS][Googleドライブ]ファイル名を一括変換するツール その2
  3. [GAS][Googleドライブ]ファイル名を一括変換するツール その3
タイトルとURLをコピーしました