Excel Dateien Importieren per AppleScript

Hallo,

ich möchte gerne einen Excel Tabellen Import automatisieren, den ich häufig durchführen muss.
Dafür habe ich ein kleines AppleScript geschrieben.

Leider scheitere ich daran, den letzten Button OK zu drücken ohne dass der Nutzer etwas tun muss ;)

Laut diesem Beitrag: http://experts.ragtime.de/experts/book/print/2475

Sollte eigentlich without link to file, value format detection and import formats
dafür sorgen, dass alle Eigenschaften gesetzt sind.
Leider bekomme ich trotzdem den Dialog mit der Auswahl für value format detection und import formats.

Dann habe ich versucht per SystemEvents die Knöpfe zu drücken aber das will AppleScript nicht tun.

Jemand eine Idee, wie ich diesen letzten OK Knopf drücken kann? :)


tell application "RagTime 6.6"
activate
open file "*****"
open table "Sheet1" of document 1
-- Hier wird Alles Auswählen aus dem Menü gedrückt.
tell application "System Events"
tell process "RagTime"
delay 0.5
click menu item "Alles auswählen" of menu 1 of menu bar item "Bearbeiten" of menu bar 1
delay 0.5
--click menu item "Löschen" of menu 1 of menu bar item "Bearbeiten" of menu bar 1
key code 51
end tell
end tell
delay 0.5
change selection to file "****" with delete old contents without link to file, value format detection and import formats
delay 1.0
-- Zwei mal Enter drücken Das Funktioniert hire nicht.
tell application "System Events"
--tell process "RagTime"
key code 36
delay 1.0
key code 36
--end tell
end tell
save document 1
close document 1
end tell

Re: Excel Dateien Importieren per AppleScript

#12475 On 12 Februar, 2018 14:26 admin said,

Ich habe dieses Skript nicht getestet, jedoch könnte ich vielleicht mit dem Mausklick weiter helfen:
tell application "System Events" to click at {100, 200}

funktioniert bei mir. Die Frage ist nur, ob der Ok-Knopf immer an der gleichen Stelle erscheint…
Außerdem müssen hier ggf. unterschiedliche Bildschirmgrößen berücksichtigt werden.

Hilft das weiter?

Thomas Eckert
RagTime Support

Re: Excel Dateien Importieren per AppleScript

#12476 On 13 Februar, 2018 08:53 bauart said,

Leider nicht. Hab auch einen Delay eingebaut aber der bringt nichts.

Es scheint mir auch so, als würde das AppleScript nicht weiterlaufen, bis der Import fertig ist.

Denn wenn ich da einen Display Dialog einbaue dann kommt nichts.

Müsste man nicht normalerweise über die Import Optionen diesen Dialog umgehen können?

Re: Excel Dateien Importieren per AppleScript

#12478 On 13 Februar, 2018 09:21 admin said,

Nun habe ich das mal selbe getestet. Dabei bin ich aber einen anderen Weg zum Import gegangen. Damit hat man das Problem mit dem Dialog gar nicht.

Anmerkung:
RagTime unterstützt "AppleScript recording". Somit kann man im ScriptEditor "record" drücken und dann manuell in RagTime die gewünschten Aktionen ausführen. Damit bekommt man oftmals den Befehl hin, den man manuell so ni geschrieben hätte…

Wie heißt es noch so schön: AppleScript ist eine read-only Sprache. Wenn man ein Skript ließt, weiß man genau was da geschehen soll. Beim schreiben muss man aber immer knobeln…

Und hier mein Skript:

set rtFile to (POSIX file "/Users/tom/Desktop/astest/x.rtd") as string
set exFile to (POSIX file "/Users/tom/Desktop/astest/Spreadsheet.xls") as string

tell application "RagTime 6.6"
	activate
	open file rtFile
	open table "Rechenblatt 1" of document 1
	change cell "A1" of table "Rechenblatt 1" of document 1 to file exFile with delete old contents, import formulas and import formats
	save document 1
	close document 1
end tell

Hilft das weiter?

Thomas Eckert
RagTime Support

Re: Excel Dateien Importieren per AppleScript

#12481 On 13 Februar, 2018 09:38 bauart said,

Hey Thomas,

jop läuft. Man sieht ja schon, dass sich da offensichtlich die Anweisungen geändert haben.
link to file gibt es gar nicht mehr und import formats anstatt value format detection.

Vielen Dank.

Ja AppleScript recording ist was ganz tolles wenn es denn funktioniert.
Leider will das bei mir nicht so wie ich es gern hätte.

Habe hier einen Mac OSX 10.10.5 bei dem das gar nicht funktioniert.
Dann noch einen Mac OSX 10.6 bei dem das ganz wunderbar funktioniert.

Aber bei dem 10.6 habe ich kein Ragtime 6.6 drauf.

Würde ja theoretisch auch noch gehen.

Geht das bei MacOS 10.12 irgendwann wieder mit dem Recorden?

Danke für die Hilfe!

Re: Excel Dateien Importieren per AppleScript

#12482 On 13 Februar, 2018 09:50 admin said,

Ich habe das unter macOS 10.13.3 gemacht.

Allerdings kann das RagTime aufgrund von Sicherheitsbeschränkungen in OS nicht mehr selber machen.

Daher einfach im SkriptEditor "Record" benutzen. Das geht auch mit dem aktuellen macOS.

Thomas Eckert
RagTime Support

Re: Excel Dateien Importieren per AppleScript

#12483 On 13 Februar, 2018 11:09 bauart said,

Hey also manchmal funktioniert das aufzeichnen und manchmal nicht. Auf meinem alten geht es aber immer also läuft das.

Habe mich heute nochmal dran gesetzt und jetzt eine Version gemacht die ohne GUI Scripting auskommt. Dann geht die auf jedem Rechner ohne extra Berechtigungen.
Funktioniert für mich super und geht auch wenn man das mal mittendrin unterbricht.

Vielleicht ist es ja in Zukunft für jemanden hifreich.


— VORSICHT!
— Wenn man das Skript benutzen will muss man jedes mal manuell aus den seconds ein second machen und dann speichern. Mega der komische BUG!

tell application "RagTime 6.6"
try
set Speichern to 1
activate

open file "***"
open table "Sheet1" of document 1
select table "Sheet1" of document 1
select empty
delete selection
on error
display dialog "Fehler bitte nochmal versuchen oder *** kontaktieren"
end try
delay 0.5
try
with timeout of 7000 second
change selection to file "***" with delete old contents, import formulas and import formats
end timeout

on error errText number errNum
set Speichern to 0
if (errNum is equal to -128) then
-- User cancelled.
display dialog "Abbruch durch den Benutzer"
else
display dialog "Fehler, bitte nochmal versuchen oder sonst *** kontaktieren. Fehler Nummer und Text : " & errNum & return & errText
end if

end try
delay 1.0
if Speichern is equal to 1 then
save document 1
close document 1

end if
end tell