ФАКТЫ:
- У меня есть папка, содержащая кучу файлов .pdf. Имена выглядят так (2-581.pdf, 131-681.pdf, 1138-4.pdf, ...)
- Файлы .pdf разбиты на две части partA-partB.pdf, разделенные "-"
- У меня есть лист excel, в котором перечислены все результаты в папке
- На листе Excel перечислено много PDF-файлов, больше, чем в папке.
- Первые 2 строки листа Excel - это заголовок и заголовки.
- Первый столбец листа Excel — это тестовый номер, который будет префиксом
- Четвертый столбец листа Excel представляет собой часть A исходного имени файла .pdf, часть 5-го столбца B.
Идеальный результат: я запускаю автомат или яблочный скрипт и указываю ему папку, содержащую .pdf-файлы и лист Excel, содержащий информацию. Он запускается и переименовывает все файлы .pdf в папке, которые находятся в Excel. Переименованные файлы будут состоять из тестового номера, пробела и исходного имени. Строка на листе Excel будет каким-то образом выделена/помечена, показывая, что она найдена.
Я искал несколько разных форумов, а также этот, и попытался собрать код, чтобы попытаться заставить что-то работать. Я не буду вставлять этот код, так как он не работает в моем сценарии.
Следующий код, который я объединил, скопирован с другого справочного форума и попытался настроить его для моего сценария. Он вроде работает для первых 6 элементов, а потом просто останавливается (думаю, потому что 7-го элемента нет в папке). Кроме того, чтобы заставить его работать, мне пришлось вручную создавать исходные имена файлов и новые имена файлов в Excel. Я сделал это, потому что не смог заставить его работать вне Excel.
Любая помощь, предложения, ссылки на возможные решения приветствуются. У меня есть МНОГО результатов тестов, которые нужно просмотреть на разных листах Excel, и это сэкономит мне массу времени. Я проиграл сегодня, пытаясь понять это сам. Я либо слишком много думаю об этом, либо не понимаю. Благодарю вас!
set KeyFileName to choose file with prompt "Choose the Excel file"
set WorkingDirectory to (choose folder with prompt "Please locate the folder with the processed .pdf's.") as string
set KeyFilePath to WorkingDirectory & KeyFileName
set FileNamesKey to my GetFileNamesKey(KeyFilePath)
set theResult to ChangeFileNames(WorkingDirectory, FileNamesKey)
return theResult
end run
to GetFileNamesKey(KeyFilePath)
tell application "Microsoft Excel"
set ResultsRange to used range of active sheet of active workbook
set FileNames to {}
repeat with i from 1 to count of rows in ResultsRange
set NewFileName to value of third column of row i of ResultsRange
set OldFileName to value of second column of row i of ResultsRange
set FileNames to FileNames & {{OldFileName, NewFileName}}
end repeat
return FileNames
end tell
end GetFileNamesKey
to ChangeFileNames(WorkingDirectory, FileNamesKey)
tell application "Finder"
repeat with aFile in FileNamesKey
set OldFileName to item 1 of aFile
set NewFileName to item 2 of aFile
set PathToFile to WorkingDirectory & OldFileName
try
set FileExtension to name extension of file (WorkingDirectory & (item 1 of aFile))
set name of file PathToFile to NewFileName & "." & FileExtension
on error
exit repeat
return false
end try
end repeat
end tell
return true
end ChangeFileNames
return input
end run
if FileExist then tell application "Finder" **to set name of file theFile to NewName**
26.01.2017