[総務 × GAS] Googleドライブのファイル名を一括で変更してみた
こんにちは!総務の徐(Seo)です。
「総務なのにプログラミング?」
はい、クラスメソッドグループの総務は非エンジニアでもGASを使いこなします!
今回は「Googleドライブ内のファイル名一括取得・変更」をご紹介します!
GoogleドライブにアップロードしたPDF100件を、1件ずつファイル名変更…なんてしていませんか?
その作業、数分で終わっちゃいます!!
↓↓↓↓手順はこちら↓↓↓↓
①ドライブ操作用スプレッドシートの作成
新しいスプレッドシートを作成し、以下の通りタイトル行を作成しておきます。
A1:ファイルID
B1:ファイルURL
C1:ファイル名
D1:新しいファイル名

②GASの設定
拡張機能 → Apps Scriptと進み、自動で最初に入力されているスクリプトを削除し、以下スクリプトを貼り付けて保存します。
/**
* カスタムメニューを作成
*/
function onOpen() {
// スプレッドシートのUIを取得
const UI = SpreadsheetApp.getUi();
// カスタムメニューを作成
UI.createMenu('メニュー')
.addItem('ファイル情報取得', 'FILE_INFO_GET')
.addItem('ファイル名変更', 'FILE_NAME_CHANGE')
.addToUi();
}
/**
* 指定フォルダ配下のファイル情報を取得してシートに出力
*/
function FILE_INFO_GET() {
const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
// A2:D列をクリア
SHEET.getRange('A2:D').clear();
// ポップアップでフォルダURLを入力
const FOLDER_LINK = Browser.inputBox(
'フォルダURLを入力',
'GoogleドライブのフォルダURLを入力してください',
Browser.Buttons.OK_CANCEL,
);
// キャンセルされた場合は処理を中断
if (FOLDER_LINK === 'cancel') return;
// フォルダIDを抽出
const FOLDER_ID = EXTRACT_FOLDER_ID_FROM_LINK(FOLDER_LINK);
// フォルダIDが無効な場合はエラーメッセージを表示
if (!FOLDER_ID) {
Browser.msgBox('無効なフォルダURLです。正しいリンクを入力してください。');
return;
}
try {
// フォルダIDからフォルダオブジェクトを取得
const FOLDER = DriveApp.getFolderById(FOLDER_ID);
// 確認ダイアログを表示
const CONFIRMED = Browser.msgBox(
'以下フォルダからファイルを取得します',
`${FOLDER.getName()}\n\n間違いなければ【OK】を押してください`,
Browser.Buttons.OK_CANCEL,
);
// キャンセルされた場合は処理を中断
if (CONFIRMED === 'cancel') return;
// フォルダ内のファイルを取得して配列化
const FILES = FOLDER.getFiles();
const FILE_ARRAY = [];
// 全ファイルをループ処理
while (FILES.hasNext()) {
const FILE = FILES.next();
FILE_ARRAY.push([FILE.getId(), FILE.getUrl(), FILE.getName()]);
}
// ファイルが存在しない場合
if (FILE_ARRAY.length === 0) {
Browser.msgBox('フォルダ内にファイルが見つかりませんでした。');
return;
}
// ファイル名(C列)で昇順にソート
FILE_ARRAY.sort((a, b) => a[2].localeCompare(b[2]));
// ソート済みのデータをシートに書き込む
SHEET.getRange(2, 1, FILE_ARRAY.length, 3).setValues(FILE_ARRAY);
// 完了メッセージを表示
Browser.msgBox(`${FILE_ARRAY.length}件のファイルを取得し、ファイル名順にソートしました。`);
} catch (error) {
// エラーが発生した場合はメッセージを表示
Browser.msgBox(`エラーが発生しました: ${error.message}`);
}
}
/**
* フォルダURLからフォルダIDを抽出
* @param {string} LINK - GoogleドライブのフォルダURLまたはID
* @return {string|null} - 抽出されたフォルダID、または null
*/
function EXTRACT_FOLDER_ID_FROM_LINK(LINK) {
// 異なる形式のリンクに対応するパターン配列
const PATTERNS = [
/\/folders\/([a-zA-Z0-9\-_]+)/,
/id=([a-zA-Z0-9\-_]+)/,
/^([a-zA-Z0-9\-_]+)$/,
];
// 各パターンでマッチングを試行
for (const PATTERN of PATTERNS) {
const MATCH = LINK.match(PATTERN);
if (MATCH?.[1]) return MATCH[1];
}
return null;
}
/**
* D列の値を使用してファイル名を一括変更
*/
function FILE_NAME_CHANGE() {
const SHEET = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
const LAST_ROW = SHEET.getLastRow();
// データが2行未満の場合は処理しない
if (LAST_ROW < 2) {
Browser.msgBox('変更するデータがありません。');
return;
}
// A列(ファイルID)とD列(新しいファイル名)のデータを取得
const RENAMES = SHEET.getRange(2, 1, LAST_ROW - 1, 4).getValues();
let SUCCESS_COUNT = 0;
let ERROR_COUNT = 0;
// 各行をループ処理
for (const RECORD of RENAMES) {
const ID = RECORD[0];
const RENAME = RECORD[3];
// 空白や未入力の行をスキップ
if (!ID || !RENAME) continue;
try {
// ファイルIDからファイルオブジェクトを取得してファイル名を変更
DriveApp.getFileById(String(ID)).setName(String(RENAME));
SUCCESS_COUNT++;
} catch (error) {
// エラーが発生した場合はログに記録
Logger.log(`ファイル名変更エラー: ${ID} - ${error.message}`);
ERROR_COUNT++;
}
}
// 完了メッセージを表示
Browser.msgBox(`ファイル名の変更が完了しました。\n成功: ${SUCCESS_COUNT}件\nエラー: ${ERROR_COUNT}件`);
}

③GAS実行(ファイル情報取得)
一度スプレッドシートをリロード(再読み込み) し、表示されたメニューから「ファイル情報取得」を実行します。
ポップアップが表示されるので、対象のGoogleドライブリンクを入力してOKをクリックします。

④新しいファイル名を入力
スプレッドシートA~C列に情報が入力されているので、D列にそれぞれの変換したいファイル名を入力します。

⑤GAS実行(ファイル名変更)
③同様のメニューから「ファイル名変更」を実行します。
「ファイル名の変更が完了しました。」というポップアップが表示されるので
該当のGoogleドライブを確認すると、指定通りにファイル名が書き換わっているはずです!

次回からは③~⑤のみの実行で完了するので、かなりの時間短縮になります!
⏱ 作業時間の比較(100件の場合)
【従来の手動作業】
1件あたり約30秒 × 100件 = 約50分
①ファイル名を1件ずつ変更
【GAS導入後】
• 初回のみ : ①②の設定(約10分)
①ドライブ操作用スプレッドシートの作成
②GASの設定
• 2回目以降: ③④⑤の実行のみ(約3分)
③ GAS実行(ファイル情報取得):約30秒
④ 新しいファイル名を入力 :約30秒
⑤ GAS実行(ファイル名変更) :約2分
🎯 2回目以降の効果
50分 → 3分(約94%削減)
最後に
🚀 非エンジニアの総務が、ここまでできる理由
「総務がプログラミング?」と驚かれるかもしれません。
でも、クラスメソッドグループの総務はIT企業ならではの環境を最大限に活かして、日々進化しています。
💡 私たちが実践していること
・エンジニアに頼らず、自分たちで解決する文化
「これ、自動化できないかな?」と思ったら、まず自分で調べて試す
・失敗を恐れない挑戦
最初は関数から。次はGAS。少しずつステップアップ
・社内の技術資産を活用
弊社エンジニアが書いたブログやドキュメントが最高の教材に
・成果をすぐに業務に反映
学んだ翌日には実務で使える即戦力スキル
🎯 「IT企業の総務」として目指すもの
私たちは単なる「バックオフィス」ではなく、テクノロジーを武器にする総務です。
✅ 定型業務は徹底的に自動化
✅ 空いた時間でより価値の高い業務に集中
✅ 学んだ知識を社内外に発信し、他の総務の方々の参考に
「総務だから技術はわからない」ではなく、
「総務だからこそ、現場の課題を技術で解決できる」
そんな新しい総務のカタチを、これからも発信していきます!
📚 過去の業務改善記事もぜひご覧ください
[総務 × GAS] 非エンジニアがGASで効率化を叶えるその日までシリーズ
Part1:https://dev.classmethod.jp/articles/soumu-kaizen/
Part2:https://dev.classmethod.jp/articles/soumu-kaizen2/









