2017-12-12 30 views
0

예 : .CSV 파일에서 다음 값을 가진 열 A가 있습니다. 2,2,5,5,5. 열 B에는 다운로드가 필요한 해당 파일에 대한 하이퍼 링크가 있습니다. http://example.com/2A.pdf, http://example.com/2B.pdf, http://example.com/5A.pdf, , http://example.com/5BC.pdf 고유하지 않은 열 A 값을 기반으로 DL 폴더를 생성하고 해당 행의 DL을 해당 폴더에 적용하는 AppleScript를 만드는 데 어려움이 있습니다. 어떤 도움이라도 대단히 감사하겠습니다! TIA. 당신의 설명에서.CSV 값을 기반으로 폴더를 만들고 weblink에서 만든 폴더에 파일을 다운로드하는 방법

+0

지금까지 시도한 코드 샘플을 제공해주십시오. 그렇게하면 더 효과적으로 당신을 도울 수 있습니다. – Ivonet

답변

0

, 나는 CSV 파일을 가정하고하는 것은 다음과 같은 :

2, http://example.com/2A.pdf 
2, http://example.com/2B.pdf 
5, http://example.com/5A.pdf 
5, http://example.com/5B.pdf 
5, http://example.com/5BC.pdf 

및 파일 2A.pdf이 라는 디렉토리에서 생을 마감해야하는

.

이것을 올바르게 해석했다고 가정하면이 새로운 파일 및 폴더를 다운로드 할 폴더의 전체 경로로 /경로/대상/저장/폴더/을 대체하고 CSV 파일의 전체 경로)에 /Path/To/File.csv :

-- Note: The ending/is essential in BaseDir 
    set BaseDir to POSIX file "/Path/To/Save/Folder/" 
    set rows to every paragraph of (read "/Path/To/File.csv") 

    set AppleScript's text item delimiters to {"/"} 

    set [TopDir, BaseFolder] to [text items 1 thru -3, text item -2] of ¬ 
     POSIX path of BaseDir 


    -- Create initial base folder if it doesn't exist 
    tell application "Finder" to if not (exists BaseDir) then ¬ 
     make new folder in (TopDir as text as POSIX file) ¬ 
     with properties {name:BaseFolder} 

    -- This will prevent EOF-related errors 
    -- Thanks to @user3439894 for highlighting the need for this 
    set rows to reverse of rows 
    if the number of words of the first item in rows is 0 ¬ 
     then set rows to the rest of rows 

    repeat with row in rows 

     set [N, |url|] to [first word, text items -2 thru -1] of row 

     -- Create folder into which file will be downloaded 
     tell application "Finder" to if not (exists [BaseDir, N] as text) then ¬ 
      make new folder in BaseDir with properties {name:N} 

     -- This is the shell command that downloads the file 
     -- e.g. "cd '/Users/CK/Desktop/example.com/5'; curl example.com/5BC.pdf \ 
     --  remote-name --silent --show-error" 
     set command to ("cd " & ¬ 
      quoted form of POSIX path of ([BaseDir, N] as text) & ¬ 
      "; curl " & |url| as text) & ¬ 
      " --remote-name --silent --show-error" 

     -- Run the shell command 
     do shell script command 

    end repeat 

    -- Open folder in Finder upon completion of downloads 
    tell application "Finder" 
     activate 
     open BaseDir 
    end tell 

내가이 있음을 강조한다 하지 상황에서 작동하는 것이 일반적으로 사용하기위한 강력한 스크립트지만, 오히려 예제 맞춤형 스크립트 설명 된 경우와 특별하게 관련된다. CSV 파일이 제 가정 된 형식과 약간 다른 경우 오류가 발생할 수 있습니다.

+1

게시하기 전에 코드를 테스트 했습니까? 그것은 좋은 스크립트이고 만약 그것이 성공했다면 +1 할 것입니다. 가장 중요한 문제는'do shell script command'가 실행될 때'command'에서'/'가 누락되었습니다. 끝 부분에 _newline_ ('0A')이있을 때 두 번째 문제는 실패합니다. 이는 매우 정상적이며 파일의 줄을 반복 할 때 항상 테스트해야합니다. (또한 파일의 줄 안에 빈 줄이 나타날 수도 있습니다.) 또한, AppleScript의 텍스트 항목 구분 기호를 변경하면 스크립트의 지점에서 재설정된다는 사실은 일반적으로 받아 들여집니다. – user3439894

+0

@ user3439894 누락 된 "/"을 강조 표시해 주셔서 감사합니다. 이 오류는 * Script Editor *에서 * Safari *로 코드를 복사하고 더미 선언에 */Path/To/Save/Folder/*를 내 테스트 폴더로 대체하여 끝 "/"을 잊어 버렸기 때문에 발생했습니다. 잠재적 인 EOF 문제에 관해서는, 이것은 내가 아직 초보자라는 말의 표지 중 하나입니다. 네가 말하지 않았 더라면 내게 일어난 일이 아니었을 것이다. 이것을 잡으려고 몇 줄을 더했습니다. 다시 한 번 감사드립니다. 마지막으로, 의도적으로 TID를 재설정하지 않기로 선택 했으므로 모든 스크립트에서 공통적 인 TID를 지금 그대로 유지합니다. – CJK