2016-05-12 14 views
0

Ich bin in einem "Grant Access" Problem mit Office 2016, wo ich manuell auf "Zugriff gewähren" klicken muss, wenn ich eine neue Datei mit Automator öffne. Ich fand diese Antwort, wie dies zu umgehen (durch ein Dateiobjekt oder ein Alias-Objekt anstelle einer Zeichenfolge verwendet wird):AppleScript/Automator Ordner Aktion zum Konvertieren von Excel in CSV

tell application "Microsoft Excel" 
activate 
open file "Macintosh HD:Users:path:to:file" 
end tell 

Aber da ich eine Automator Ordner Aktion bin mit, ich bin nicht sicher, wie um den Dateipfad dorthin zu bringen, wo er sein muss. Die meisten Beispiele, die ich gefunden habe, verwenden das AppleScript choose folder with prompt, aber da der ganze Punkt davon völlig automatisiert sein soll, wird das nicht funktionieren.

Die Idee ist:

  1. Excel-Datei in "ForSQL" -Ordner
  2. heruntergeladen wird
  3. Ordner Aktion aufgefordert, xls-Datei in csv zu konvertieren
  4. csv öffnet dann in TextWrangle, um sicherzustellen, bleibt in UTF- 8
  5. bewegt es dann zu offiziellen „SQL“ -Ordner
  6. Schließt alle Anwendungen, öffnete sie und löscht alles, was sie aus dem „ForSQL“ Ordner verschoben

Aber ich bin offen für bessere Vorschläge, die zum gleichen Endergebnis kommen.

Dies ist mein Automator-Workflow bisher - aber es sieht so aus, als müsste ich den Schritt "Format der Excel-Dateien konvertieren" mit AppleScript ersetzen, um das Popup "Zugriff gewähren" zu entfernen. Es ist ein Ordner Aktion, die beginnt, wenn etwas das „ForSQL“ -Ordner hits:

AutomatorWorkflow

Antwort

0

Ich bin nicht sicher, zu verstehen, was Sie mit textWrangle tun wollen, aber das Skript unten führt alle Schritte vor und nach nur mit Applescript (keine Notwendigkeit für Automator-Aktionen):

--this choose file must be replaced by your "input" of automator folder items 
set Fxl to choose file --the Excel file to be processed 


-- define here your destination SQL folder 
-- for my tests, I used a folder mySQL on my Desktop 
set SQLFolder to ((path to desktop folder) as string) & "mySQL" 

tell application "Finder" to set ForSQL to (container of Fxl) as string 

--define new name by replacing current extension (xls, xlsx, xlsm, xml) by "csv" 
tell application "Finder" 
set N to name of Fxl 
set NbExt to length of ((name extension of Fxl) as string) 
set newname to (text 1 thru -(NbExt + 1) of N) & "csv" 
end tell 

--convert to CSV and close 
tell application "Microsoft Excel" 
open Fxl 
tell workbook 1 
    tell sheet 1 to save in (ForSQL & newname) as CSV file format 
    close without saving 
end tell 
end tell 

-- add eventually your TextWrangle step here (?) 

-- delete source file and move csv to proper folder 
tell application "Finder" 
delete Fxl 
move file (ForSQL & newname) to folder SQLFolder 
end tell 

in der Praxis können Sie dies alles in voller Apple Ordner Aktion ausgeführt. Ersetzen Sie die "Set Fxl to choose ..." durch "beim Hinzufügen von Ordnerelementen ...". In diesem Fall müssen Sie das obige Skript in eine Wiederholungsschleife einfügen, um alle Dateien im Ordner zu verarbeiten.

Sie haben jedoch möglicherweise Probleme mit dem Skript für die Ordneraktion, da das System das Skript zum Zeitpunkt der Erstellung der neuen CSV-Datei erneut auslöst (wiederum im selben Ordner!).

Die Arbeit, die ich vorschlage, ist, Ordner-Aktionsskript zu verwenden, um die Datei in ForSQL zu löschen, verschieben Sie es zu einem anderen "Temp_ForSQL" und führen Sie dieses Skript mit der verschobenen Datei. Dadurch werden die cvs zu temp_forSLQ hinzugefügt, ohne dass ein neues Skript für die Ordneraktion ausgelöst wird.

Ich hoffe, es ist klar genug ... wenn nicht, lass es mich wissen.

+0

Vielen Dank! Versuchen, mitzukommen und es zu testen. Sollte ich die Automator-Ordner-Aktion nicht mehr verwenden - wenn nicht, muss ich einfach "beim Hinzufügen von Ordner-Elementen" hinzufügen, wenn die Dinge auf meinen Downloads-Ordner stoßen? Da wir die CSV-Datei im selben Ordner erstellen, ist es trotzdem erforderlich, die Datei vor der Konvertierung in den SQL-Ordner zu verschieben, damit dies nicht geschieht? Schließlich habe ich das noch nicht zum Laufen gebracht, aber das Hauptproblem mit dem Automator-Skript war, dass die "Grant Access" -Seite von Excel 2016 für Mac auftauchte, was die ganze Sache zum Bruch brachte. Ist das auch mit diesem Code gegangen? – Ryan

+0

Auch der TextWrangler Teil war nur um sicherzustellen, dass die Datei in UTF-8 blieb, weil ich bemerkte, dass einige von ihnen aus irgendeinem Grund auf OS Roman umgestellt wurden. Aber wenn das in Excel passieren könnte, würde ich diesen Schritt nicht brauchen - ich könnte es einfach nicht anders herausfinden. – Ryan

+0

Herumspielen mit dieser und ich bekomme immer Fehler "Fehler" Microsoft Excel hat einen Fehler: Parameter Fehler. "Nummer -50", wenn der Code auf die 'Speichern in (SQL & Newname) als CSV-Datei-Format' Linie. Offenbar ist das ein bekanntes Problem? http://www.mac-help.com/threads/automator-wont-convert-to-csv.221267/ Mein Automator-Skript funktionierte im Allgemeinen, es hat mich erst manuell Zugriff gewähren lassen, was die Automatisierung ruinierte. – Ryan