[GastForen Programmierung/Entwicklung AppleScript Excelspalten einlesen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Excelspalten einlesen

br_amy12
Beiträge gesamt: 1

2. Mär 2011, 13:13
Beitrag # 1 von 3
Bewertung:
(2007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle,

ich weiß mir leider keinen anderen Rat, darum baue ich auf eure Hilfe.

Ich habe einen Ordner mit Dateien (ca. 6000, z.B. aaa.nii) und ich habe eine Exceltabelle (in Spalte A steht der alte Name der Dateien und in Spalte B steht der neue Name den die Dateien bekommen sollen).

Wie kann ich das mit Applescript umsetzen?

Vielen Dank für eure Hilfe
X

Excelspalten einlesen

Hans Haesler
  
Beiträge gesamt: 5822

2. Mär 2011, 15:27
Beitrag # 2 von 3
Beitrag ID: #466138
Bewertung:
(1988 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo br_amy12,

herzlich willkommen im AppleScript-Forum auf HDS! :-)

Eine happige Aufgabe. Damit Dir jemand richtig helfen kann, musst Du uns mehr verraten:
– Mac OS
– PowerPC oder Intel-Maschine
– Version von Excel

Das grösste Problem wird die Verwaltung sein. Man kann zwar mit einem try-Wickel dafür sorgen, dass es keine Fehlermeldung gibt, wenn eine "alte" Datei mit einem "neuen" Namen versehen werden soll, welcher schon vorhanden ist. Dann aber muss das Problem in einer Rapportdatei festgehalten werden.

Gruss, Hans


als Antwort auf: [#466124]

Excelspalten einlesen

TMA
Beiträge gesamt: 393

3. Mär 2011, 07:43
Beitrag # 3 von 3
Beitrag ID: #466157
Bewertung:
(1942 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
für so etwas habe ich schon etwas fertig. Ist ein altes Script. Vielleicht programmiertechnisch nicht auf dem neuesten Stand aber es funktioniert.
Code
------------------------------------------------------------------------------------------------------------------------------------- 
on Initialize()
set my text item delimiters to ""
end Initialize

on Finalize()
with timeout of 14400 seconds -- 4 Stunden
activate
display alert "Fertig" message "Objekt(e) wurde(n) verarbeitet."
end timeout
end Finalize

on ProcessAFileOrFolder(theFile)
if (theFile as string) ends with ":" then
ScanAFolder(theFile)
else
ProcessAFile(theFile)
end if
end ProcessAFileOrFolder

on ScanAFolder(theFolder)
set fileNames to list folder theFolder without invisibles
repeat with aFile in fileNames
set theFile to (theFolder as string) & contents of aFile
ProcessAFileOrFolder(alias theFile)
end repeat
end ScanAFolder

on open of filesList
my Initialize()
repeat with aFile in filesList
ProcessAFileOrFolder(contents of aFile)
end repeat
my Finalize()
end open

on run
activate
display alert "ACHTUNG!" message "Läuft nur als Droplet. Bitte Objekt(e) auf das Script ziehen." as warning
end run
-------------------------------------------------------------------------------------------------------------------------------------
on ProcessAFile(csvDatei)
if (csvDatei as string) does not end with ".csv" then
activate
display alert "ACHTUNG!" message "Keine CSV-Datei. Bitte eine CSV-Datei auf das Script ziehen." as warning
error number -128
end if
set SourceFolder to choose folder with prompt "Bitte den zu bearbeitenden Oberordner wählen:" without invisibles
set csvList to {}
set csvList to my readLogFile(csvDatei as string)
repeat with tmpCsvLine in csvList
set my text item delimiters to ";"
set tmpOldFileName to text item 1 of tmpCsvLine as string
set tmpNewFileName to text item 2 of tmpCsvLine as string
set my text item delimiters to ""
if tmpOldFileName ≠ "" and tmpNewFileName ≠ "" then
set tmpAllFiles to {}
set tmpFileList to {}
-- letzter doppelpunkt vom pfad entfernen
set startPath to (characters 1 thru -2 of (SourceFolder as string)) as string
-- alle bilder aus dem oberordner holen die mit dem namen anfangen
set tmpAllFiles to do shell script ("find " & quoted form of (POSIX path of startPath) & " -type f -name " & quoted form of (tmpOldFileName) & " -not -path '*layouts*' " as string)
log tmpAllFiles

if tmpAllFiles ≠ "" then
set my text item delimiters to return
set tmpAllFiles to every text item of tmpAllFiles
set my text item delimiters to ""
repeat with tmpFoundFile in tmpAllFiles
set tmpHSFpath to POSIX file (tmpFoundFile as string) as string
set end of tmpFileList to tmpHSFpath
end repeat
end if

log tmpFileList
repeat with tmpFile in tmpFileList
try
tell application "Finder" to set name of file tmpFile to tmpNewFileName
on error
activate
display dialog "Die Datei" & return & tmpFile & return & "konnte nicht umbenannt werden" giving up after 30
end try
end repeat
end if
end repeat
end ProcessAFile
-------------------------------------------------------------------------------------------------------------------------------------
on readLogFile(theFile)
try
set tmpList to paragraphs of (do shell script "tr '\\r' '\\n' < " & quoted form of (POSIX path of (theFile as string)))
if tmpList &#8800; {} then return tmpList
return false
on error
return false
end try
end readLogFile
-------------------------------------------------------------------------------------------------------------------------------------

Bitte im Script das "&#8800;" durch ein Ungleich ersetzen.

Die Excelliste muss vorher als "CSV" (Kommagetrennte Werte) aus Excel gespeichert werden. Diese CSV dann einfach auf das Script ziehen (Droplet).

Gruß
TMA


als Antwort auf: [#466138]
(Dieser Beitrag wurde von TMA am 3. Mär 2011, 07:45 geändert)