Cocoon-Engine

甘党インフラエンジニアの技術ブログ

Chocolat Chocolat Chocolat Chocolat

IT技術とスイーツに興味がある方、ちょっと見ていきませんか?

【GAS】Googleドライブでファイルをコピーした時にファイル名末尾に付く「のコピー」を消す!

Googleドライブでファイルをコピーするとファイルの末尾に「 のコピー」が勝手につくんですよね。
同じフォルダ内に同名ファイルは存在できないので仕方ないですが、複数ファイルをコピーした時は一つずつ手動で直すのも手間なのでGASで効率化します!

やりたいこと

  • ドライブ上でコピーしたファイルはファイル名が「XXXX のコピー」となるので、「 のコピー」の部分を削除する。
  • 必要なのはコピーしたファイルがあるフォルダID(URLの https://drive.google.com/drive/folders/hogehoge の hogehoge 部分)

コード

function Copy_File_Rename() {

  //GoogleドライブのフォルダIDを入力
  //(URLの https://drive.google.com/drive/folders/hogehoge の hogehoge 部分)
  const folderID = 'hogehoge';

  const tgtfolder = DriveApp.getFolderById(folderID);
  const condition = 'title contains " のコピー"'; 
  const files = tgtfolder.searchFiles(condition);

  while(files.hasNext()){
    const file = files.next();
    const file_name = String(file.getName());
    const file_name_new = file_name.replace(' のコピー', '');

    file.setName(file_name_new);
  }
}

やってることは単純な文字列削除(置換)ですね。
フォルダ内から「 のコピー」を含むファイルを抽出し、「 のコピー」の部分を空文字に置換することで削除しています。


ちょっと応用。同じ要領でファイル名の一括置換をやってみます。

function File_Rename() {

  //GoogleドライブのフォルダIDを入力
  //(URLの https://drive.google.com/drive/folders/hogehoge の hogehoge 部分)
  const folderID = 'hogehoge';

  const tgtfolder = DriveApp.getFolderById(folderID);
  
  //変更条件(タイトルに~を含む)
  const condition = 'title contains "【2023年10月】"'; 
  //置換前文字列
  const before = '【2023年10月】'
  //置換前文字列
  const after = '【2023年11月】'

  const files = tgtfolder.searchFiles(condition);

  while(files.hasNext()){
    const file = files.next();
    const file_name = String(file.getName());
    const file_name_new = file_name.replace(before, after);

    file.setName(file_name_new);
  }
}

file_name.replace(before, after) とすることで置換前と置換後の文字列をそれぞれ指定したものに変えました。
例ではフォルダ内で【2023年10月】をファイル名に含むものを抽出し、【2023年10月】の文言を【2023年11月】に置換しています。

シンプルだけど意外と役に立つ。作ってよかった~

気に入ったらぜひ共有してください。

TOP