Jpcanada留学センター

【広告】

注意事項:当サイトのコンテンツをご利用いただく全ての方は、利用規約に同意したものとみなします。 このサイトの掲示板は情報交換やコミュニケーションが目的で設置されています。投稿内容の信憑性については、 各個人の責任においてご判断下さい。全ての投稿において、投稿者には法的な責任があることをご認識ください。
また、掲示板上で誹謗・中傷を受けた場合は、速やかにサイト管理者までご連絡をお願いいたします。

パソコン勉強室

パソコンやインターネットに関する事なら何でもOKです。
協力し合いながら、皆でパソコンに強くなりましょう。


新規投稿される方は、こちらへ(アイコンの説明もあります)
No.4396

app scriptでわからないことがあります

by 無回答 
from 無回答
 2025/02/18 16:53:40 CA

コードはこちらです。

フォルダにはサブフォルダ
(例)"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);
}
}
}
}
}

Res.1

by 無回答
from 無回答 2025/02/18 18:19:14 CA

言語は多分JavaScriptだろうけど、include関数を使えば良いのでは。

if (fileName.includes(folderNumber)) { // 例

今はもうChatGPTとかAIに聞くととても詳細なコードが返ってくるので聞いてみると良いと思いますよ。

Res.2

by 無回答
from 無回答 2025/02/20 13:32:29 CA

ありがとうございます。

いろいろ調べてやってみましたが、どうしてもできなかったので1つステップを挟んで、ファイルの名前をGASで変更してその後にフォルダに振り分けることにしました。

プログラムの書き方は全くわかりませんが、コピーしてちょっと手を加えるだけでもとっても楽しいです。これから勉強していきたいと思います。