Thread wurde vom System oder vom Community-Team geschlossen.

Mit Apple Script in einer Numbers Datei im Blatt ABC in der Tabelle XY die Spalte "B" auswählen und kopieren

Hallo Alle,

Den heutigen Tag habe ich damit verbracht, herauszubekommen, wie man AppleScript dazu bewegt, die oben beschriebene Aktionen auszuführen.

Mit Apple Script in einer "Numbers" -Datei im Blatt ABC in der Tabelle XY die Spalte "B" auswählen und kopieren.

Leider hat es nicht funktioniert. Könnte mir hier jemand helfen, wie es denn gehen könnte. Ich habe es geschafft Numbers zu starten und die Datei zu öffnen. Danach ging's für mich nicht weiter!

Auch ChatGPT hat mir nur einige Denkanstöße gegeben, aber.... Leider Nein.

Viele Grüße.

Stefan


Hier noch mein "Script" Wie man sieht, viel Erfahrung habe ich nicht.


on run {input, parameters}



tell application "Numbers"


activate


open "/Users/XYZ/Library/Mobile Documents/com~apple~Numbers/Documents/Spielfeld /test.numbers"


end tell


return input


end run



MacBook Pro 13″, macOS 10.15

Gepostet am 16. Aug. 2023 21:28

Antworten
14 Antworten

17. Aug. 2023 08:26 als Antwort auf Jonzo

Gern geschehen Jonzo 😊


Hinsichtlich deiner Unabhängigkeit, auch im Bezug auf Anpassungen von Apple Script, habe ich mir einmal die Mühe gemacht Dir Nachfolgendes herauszusuchen, welches diesbezüglich geeignet erscheint:


Skripteditor – Benutzerhandbuch für den Mac - Apple Support (DE)

Introduction to AppleScript Language Guide

https://www.devedge.de/mac-os-x/applescript

https://macscripter.net/index.php


Alles Liebe und viel Erfolg


○ Apple Support ○ Apple-ID oder Passwort vergessen ○ Reparatur ○ Abrechnung und Abonnements 

17. Aug. 2023 07:45 als Antwort auf Jonzo

Hallo Jonzo


Basierend auf deiner Anfrage möchtest du:


  1. Die "Numbers"-App öffnen.
  2. Eine spezifische Datei in "Numbers" öffnen.
  3. Zum Blatt "ABC" gehen.
  4. In der Tabelle "XY" die Spalte "B" auswählen und kopieren.


tell application "Numbers"
	activate
	
	-- Open the specific file
	set theFilePath to "/Users/XYZ/Library/Mobile Documents/com~apple~Numbers/Documents/Spielfeld /test.numbers"
	set myDocument to open theFilePath
	
	-- Go to the sheet named 'ABC' and the table named 'XY'
	tell sheet "ABC" of myDocument
		tell table "XY"
			
			-- Copy the entire column B
			set myColumn to value of cells of column "B"
			
			-- If you want to copy the values of column B to another column (say G) then use:
			repeat with i from 1 to (count myColumn)
				set value of cell i of column "G" to item i of myColumn
			end repeat
			
		end tell
	end tell
	
end tell


Bitte beachte, dass dieses Skript davon ausgeht, dass die Datei, das Blatt und die Tabelle existieren. Es wird auch davon ausgegangen, dass die Spalte "G" überschrieben werden kann. Wenn diese Annahmen nicht zutreffen, kann das Skript Fehler verursachen. Teste das Skript sorgfältig und stelle sicher, dass es deinen Anforderungen entspricht, bevor du es in einer Produktionsumgebung einsetzt.


Liebe Grüße


16. Aug. 2023 23:33 als Antwort auf Jonzo

Wenn die Datei geöffnet ist:


tell application "Numbers"

activate


set myDocument to document "test.numbers"


tell table 1 of sheet 1 of myDocument


set myValue to value of cell "B2"

set myColumn to value of cells of column "B"

-- in myColumn ist die Liste aller Werte aus der Spalte "B"


-- (count myColumn) gibt die Größe der Liste zurück

repeat with i from 1 to (count myColumn)

set value of cell i of column "G" to item i of myColumn

end repeat

end tell


end tell


Zur Erklärung:

in der Variablen myColumn wird eine Liste der Werte gesichert, die in Spalte "B" sind. Diese Liste wird in der repeat-Schleife durchlaufen und in Spalte G geschrieben.

17. Aug. 2023 08:12 als Antwort auf PreCognition

Super, erstmal vielen Dank euch beiden.

ich finde einiges in euren Skripten wieder das ich gestern herausgefunden habe.

Und dann denkt man: tell table 1 of sheet 1 of myDocument, kann es so einfach sein?

Wenn man es so liest.

Ich werde hoffentlich noch einiges lernen wenn ich die Variablen auf meine "Projekt" anpasse und auch sicherlich noch ein paar Fragen haben.

Z.B. zu Index oder Name of table und sheet. o Ä.


Liebe Grüße

Jonzo



17. Aug. 2023 11:27 als Antwort auf PreCognition

Hallo PreCognition,

vielen Dank leider kann ich die beiden letzten Links nicht öffnen. Aber mal langsam.

Habe mir beide Skripts mal näher angeschaut, im Editor angepasst, ein wenig herum experimentiert und wieder was gelernt. Alle klappt ! 😀

Was ich mir noch nicht erklären kann, ist zum einen, dass "i" im folgenden Statement,

set value of cell i of column "G" to item i of myColumn

Vor allem, weil es klein geschrieben ist.

Außerdem bereitet mir die "1" etwas Kopfzerbrechen

-- If you want to copy the values of column B to another column (say G) then use:

repeat with i from 1 to (count myColumn)


Und was bezweckt RichardB. mit dem Wert von Zelle "B2"?

set myValue to value of cell "B2"



Lieben Dank.

Jonzo







17. Aug. 2023 12:19 als Antwort auf Jonzo

Hallo Jonzo,


ich helfe dir gerne, das Skript zu verstehen.


set value of cell i of column "G" to item i of myColumn

In dieser Zeile steht das "i" für den aktuellen Wert in der Schleife (die Zählvariable). Es wird durch den "repeat with i from 1 to ..." Block gesteuert. Bei jedem Durchlauf der Schleife nimmt "i" einen neuen Wert an, beginnend mit 1 und endend mit dem Wert, der durch "(count myColumn)" zurückgegeben wird.


Im Skript verwendet man "i" (klein geschrieben), weil es in AppleScript üblich ist, Zählvariablen klein zu schreiben. Es ist nur eine Konvention, man könnte auch andere Namen oder Schreibweisen verwenden.


repeat with i from 1 to (count myColumn)

Die "1" ist der Startwert von "i" im ersten Durchlauf der Schleife. Mit jedem weiteren Durchlauf erhöht sich "i" um 1, bis es den Wert von "(count myColumn)" erreicht, welcher die Anzahl der Zellen in der Spalte "B" ist.


set myValue to value of cell "B2"

Dieser Befehl speichert den Wert der Zelle "B2" in der Variable "myValue". RichardB. hat diesen Befehl wahrscheinlich nur zu Demonstrationszwecken hinzugefügt, um zu zeigen, wie man den Wert einer einzelnen Zelle abruft.


Zusammenfassend kopiert das Skript alle Werte aus der Spalte "B" in die Spalte "G". Das "i" wird verwendet, um durch jede Zelle der Spalte "B" zu gehen und den entsprechenden Wert in die Spalte "G" zu setzen.


Liebe Grüße

17. Aug. 2023 12:28 als Antwort auf Jonzo

Die Zeile "set myValue to value of cell "B2"" kannst Du vergessen, da habe ich rumgespielt und habe vergessen die Zeile wieder rauszunehmen.


zu dem i:


Der vollständige Ablauf lautet:


repeat with i from 1 to (count myColumn)

set value of cell i of column "G" to item i of myColumn

end repeat


Die Variablen i (du kannst sie auch Hugo nennen, dass ist vollkommen egal) geht die Werte von 1 bis zur Anzahl der gefüllten Zellen in der Spalte myColumn (Spalte "B") durch und nimmt daher jeden Wert nacheinander an (1, 2, 3, 4 ...)


set value of cell i of column "G" to item I of myColumn, bedeutet:


Der Wert (value) aus der Zeile i und der Spalte myColumn ("B") wird in die gleiche Zeile (i) der Spalte G geschrieben.


i hat den Startwert 1:

Der Wert aus B1 wird in G1 geschrieben.

Dann wird i zu 2:

Der Wert aus B2 wird in G2 geschrieben.

...



17. Aug. 2023 13:24 als Antwort auf RichardB.

Hallo ihr beiden,

Vielen Dank für eure Hilfe.

Ich komme bei AppleScript von 0 und habe in den beiden letzten Tagen viel erfahren.

Es gibt noch viel zu lesen und auszuprobieren.

Mit dem was ihr mir gegeben habt werde ich mal erst beschäftigt sein, aber der Anfang ist gemacht.

Sicher werde ich bald wieder etwas zu fragen haben.


Vielen Dank und liebe Grüße

Jonzo

11. Sept. 2023 13:30 als Antwort auf PreCognition

Hallo An Alle ,

wollte mich nochmal melden und etwas fragen.

Es hat zwar etwas gedauert, aber ich habe nach den Einstiegshilfen hier von euch selber an einem Script rumgebastelt und nebenher die Datei "Apple Script für absolute Starter 2x durchgelesen.

Es ist natürlich noch sehr bescheiden, aber es tut mal erst das was es soll.

Werte aus einer Numbers-Datei in eine andere schreiben. Hier ist mein Script dazu:


tell application "Numbers"


activate


-- Open the specific file


set thefilepath1 to "/Users/XYZ/Library/Mobile Documents/com~apple~Numbers/Documents/Spielfeld /Spalte und Zellen/KWprobe.numbers"


set KWprobe to open thefilepath1


set columnbkw to column "B" of table "Alle7Tage" of sheet "LetzteWoche" of KWprobe



set theFilePath2 to "/Users/XYZ/Library/Mobile Documents/com~apple~Numbers/Documents/Spielfeld /Spalte und Zellen/Matrixprobe.numbers"


set matrix to open theFilePath2


--Ziel definiert mit Index



--Daten holen


tell table "SummeWoche" of sheet 2 of matrix


set columnbma to value of cells of column "B"


-- in columnb ist die Liste aller Werte aus der Spalte "B"



--(count columnbma gibt die Größe der Liste zurück


repeat with i from 7 to (count columnbma)


set value of cell i of columnbkw to item i of columnbma


end repeat


end tell



end tell



Natürlich werden erfahrenere jetzt die Hände über dem Kopf zusammenschlagen was die Form und Sprache angeht, aber es funktioniert bei mir und für mich. Jetzt kann es weitergehen.

Zunächst würde ich gerne wissen was die runden Klammern besagen. z.B.repeat with i from 7 to (count columnbma)

Die runden Klammern sind mir zwar noch in anderen zusammenhängen aufgefallen, aber eine Erklärung habe ich nicht gefunden, oder nicht gesehen.


Wie kann man das ganze mit mehreren Spalten machen. Mit set columnbkw to column "B,C,D" of table ....

oder mit & oder vielleicht mit von "A:F"?

Ich könnte es natürlich ausprobieren, wüsste aber gerne wie man das richtig macht



Vielen Grüße

Jonzo




14. Sept. 2023 18:02 als Antwort auf Jonzo

Hallo, bin wieder da mit ein-zwei Fragen.

ich habe in mein Skript eingefügt, dass ein neue Spalte eingefügt werden soll.

--eine neue Spalte links der zuletzt ausgefüllten einfügen


tell table "Jahr" of sheet "Woche" of KWaktuell


set columnvorderletzten to column 5


add column before columnvorderletzten


end tell



Klappt alles gut und auch so wie es soll .

Probleme habe ich nur mit dem Format. Ich habe es schon mal gelesen, finde es aber nicht wieder!

Wenn Spalten und Zeilen eingefügt werden wird das Format automatisch auf "Automatisch" gesetzt.

Meine Fragen wären:

Wie kann ich das Format der Quellspalte "mitnehmen"?

In bescheidenem Rahmen habe ich es hinbekommen das Format von Zellen, Spalte und Zeilen in z.B. Prozent zu ändern. Aber es gelingt mir nicht so richtig. Zumal nur einzelne Zellen oder Blöcke geändert werden sollen.

Und wie bekomme ich das ganze mit der "repeat" Funktion hin?


Wenn ich in einer Numbersdatei etwas kopiere kann ich es mit cmd-v einfügen, aber auch mit Umschalt-comand- v. Also je nachdem mit Formeln, usw. Das würde ich gerne in meinem Skript vorgeben.


Die Anzahl der Nachkommastellen. Dazu habe ich nichts gefunden :-(


Bin mal gespannt wie das geht. Vielen Dank schonmal!


Grüße

Jonzo









Mit Apple Script in einer Numbers Datei im Blatt ABC in der Tabelle XY die Spalte "B" auswählen und kopieren

Willkommen in der Apple Support Community
Ein Forum, in dem Apple-Kunden sich gegenseitig mit ihren Produkten helfen. Melde dich mit deinem Apple Account an, um Mitglied zu werden.