2017-01-26 22 views
0

ФАКТОВ:AppleScript - Если файл указан в первенствовать листе добавить другое значение столбца в качестве префикса

  • У меня есть папка, которая содержит кучу файлов .pdf. Имена выглядят как (2-581.pdf, 131-681.pdf, 1138-4.pdf, ...)
  • Файлы .pdf разбиты на две части partA-partB.pdf, разделенные «-»
  • У меня есть лист Excel, в котором перечислены все результаты в папке
  • Лист Excel содержит много PDF-файлов, перечисленных в нем, больше, чем в папке.
  • листа Excel, первые 2 строки являются заголовок и заголовки
  • Лист Excel, первый столбец тест #, который будет префикс
  • Лист Excel, 4-ый столбец Parta исходного файла .pdf, 5-й столбец partB

Ideal Я результаты достижения конечных запустить Automator/AppleScript и указать его в папку, содержащую .pdfs и лист первенствовать, содержащий информацию. Он запускает и переименовывает все .pdfs в папке, которые находятся в 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 

ответ

0

Если я хорошо понимаю, у вас есть Excel файл с col.A = #test, col.B = oldFileName (хх-yyy.pdf), col.C = NewName (пусто?), Кол D = PartA (xx), Col.E = PartB (yyy)

Вы хотите перебрать все строки этого файла, искать, если файл из Col.B существует в выбранной папке, и если это так, вы хотите изменить имя файла (= colA + "" + старое имя) и сделать его видимым в строке Excel.

Если все в порядке, то скрипт ниже выполняет то, что вы хотите. Если файл найден в выбранной папке, я выделил строку Excel двумя способами: установить новое имя файла в столбце C (не уверен, что он был пуст до?), И я установил его цвет в красный цвет. Я добавил много комментариев, чтобы понять (я надеюсь!):

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 

tell application "Microsoft Excel" 
open KeyFileName 
set ResultsRange to used range of active sheet of active workbook 
-- Data bloc starts row 2 with headers and then row 3 to x 
-- col.A= #test, col.B= oldFileName (xx-yyy.pdf), col.C= NewName (empty), Col.D= PartA (xx), Col.E= PartB (yyy) 
repeat with i from 2 to count of rows in ResultsRange 
    -- loop through each Excel row only starting row 2 of the range to skip hearders 
    set OldFileName to value of second column of row i of ResultsRange 
    set NewName to (value of the first column of row i of ResultsRange) & " " & OldFileName 
    set theFile to WorkingDirectory & OldFileName 
    tell application "Finder" to set FileExist to (file theFile exists) --check file exists 
    if FileExist then 
     tell application "Finder" to set name of file theFile to NewName --change file name in the folder 
     set (value of third column of row i of ResultsRange) to NewName -- set new name in Excel col.C 
     set (color index of interior object of third column of row i of ResultsRange) to 3 -- = Red ! 
    end if 
end repeat --- next Excel row 
end tell 

Линия «Open KeyFileName» может быть пропущена файлы Excel уже открыто. Также сценарий не сохраняет файл Excel после изменений!

+0

Я запустил это, и он возвращается с ошибкой, которая заявляет: Finder получил ошибку: Невозможно сделать {1.0, "", "A-53.pdf"} в текст типа Юникод. Выделенный код, который поставляется с этой ошибкой является следующая: 'если FileExist затем \t \t \t РАССКАЖИ«Finder»** установить имя файла theFile для NewName **' – OriginalDuplicate

+0

Странно я проверил это нормально на моем боковая сторона. Я думаю, что это может произойти от значения вашего столбца A. Сначала добавьте строку непосредственно перед «if FileExist ..» с помощью: log «name =» & NewName. он покажет значение NewName. основанный на вашей ошибке, кажется, что он становится списком вместо строки. если это так, то вам, возможно, придется изменить строку «set NewName ...». сначала проверьте и дайте мне знать, я обновлю скрипт. – pbell

+0

Я попытался добавить строку журнала, упомянутую выше, и получил ту же ошибку. Не совсем уверен, как проверить журналы, чтобы увидеть, что эта переменная тянет. Мне удалось добавить «как текст» после установки OldName и NewName, и это сработало. теперь скрипт запускается, я вижу, что ячейки становятся красными, а файлы переименовываются! Переименованные файлы называются префикс числа с десятичной точкой. Я удалил десятичные пробелы в листе excel в форматировании, но, похоже, все еще помещает его там в имя. ПРИМЕР: «75.0 769-315.pdf» – OriginalDuplicate