コードはこちらです。
フォルダにはサブフォルダ
(例)"12345_Name"が複数あります。
またPDFファイルもあります。
名前はさまざまです。
Copy of 12345 document.pdf
12345 file 2024.pdf
などです。
フォルダと同じ名前のファイルはフォルダに振り分けることはできました。
しかし、フォルダと一部だけ名前が同じファイルの振り分けができません。
同じID番号、12345のつくファイルは12345_Nameのフォルダに振り分けたいです。
調べてみたのですが、どうしてもPDFファイル名に含まれる数字を認識してくれません。
ChatGTPと修正を試みましたが、できませんでした。
どなたかどこを修正すればいいのか教えていただけませんか?
私は全くの初心者で、ネットで調べたコードをコピーして、一つ一つの行の意味を調べながら、分かる範囲で付け加えたり削除したりしています。
よろしくお願いします。
function organizeFilesByNumberMatch() {
var parentFolderId = 'フォルダ名'; // 親フォルダのIDを指定
var parentFolder = DriveApp.getFolderById(parentFolderId); // 親フォルダを取得
var folders = {}; // フォルダ名とオブジェクトをマッピング
var subFolders = parentFolder.getFolders();
while (subFolders.hasNext()) {
var folder = subFolders.next();
var folderName = folder.getName();
var folderNumber = folderName.match(/\d+/); // フォルダ名から数字部分を抽出
if (folderNumber) {
folders[folderNumber[0]] = folder; // 数字部分をキーにしてフォルダを保存
}
}
var files = parentFolder.getFiles();
while (files.hasNext()) {
var file = files.next();
var fileName = file.getName();
var fileNumber = fileName.match(/\d+/); // ファイル名から数字部分を抽出
if (fileNumber) {
var number = fileNumber[0];
if (folders[number]) { // 一致するフォルダがあれば移動
try {
file.moveTo(folders[number]);
Logger.log('Moved "' + fileName + '" to "' + folders[number].getName() + '"');
} catch (e) {
Logger.log('Error moving "' + fileName + '": ' + e.message);
}
}
}
}
}
Reply this post