AppleScript: Mehrzeiligen Text in eine Zelle schreiben

Von admin. | 27 April, 2017 - 14:11
Beschreibung:

Man kann in RagTime recht einfach eine Rechenblattzelle mit Inhalt versehen:
set cell "B1" of table 1 of document 1 to "some text"

Sobald der Text allerdings über mehrere Zeilen geht, wird automatisch jede Zeile in eine Zelle geschrieben. Das kann ab und zu hilfreich sein, z.B. aber bei einer längeren Artikelbeschreibung in einer Rechnung will man den Text eher in einer Zelle haben.

Da die Lösung dazu nicht ganz einfach zu finden ist, möchte ich hier ein kleines Beispiel geben:

Es wird ein neues RagTime Dokument anlegt und ein mehrzeiliger Text in die Zellen A1 und B1 geschrieben. In Spalte A werden mehrere Zellen damit gefüllt, in Spalte B eine Mehrzeiler Zelle.
-- SCRIPT START
set linefeed to (ASCII character 10)

set sampleText to "Line 1
Line 2
Line 3
"

tell application "RagTime 6.6"
activate
-- create a new document
make with properties {component types:layout} new document at end
select rectangle 1 of page 1 of layout "Layout 1" of document 1
set contents type of selection to table

-- place dummy values in some cells
repeat with aCell in {"A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"}
set cell aCell of table 1 of document 1 to "Dummy " & aCell
end repeat
end tell

tell application "RagTime 6.6"
-- Column A
-- write each text line to its own cell
-- note: the trailing new line does create an empty cell
set cell "A1" of table 1 of document 1 to sampleText as text
end tell

-- Column B
-- write the complete text into one cell

-- First check the line ending type and replace LINEFEED with RETURN
if sampleText contains linefeed then
set text item delimiters to linefeed
set sampleText to text items of sampleText
set text item delimiters to return
set sampleText to sampleText as text
end if

-- is multiline text?
if sampleText contains return then
tell application "RagTime 6.6"
set preset type of cell "B1" of table 1 of document 1 to multiline text
set value of cell "B1" of table 1 of document 1 to sampleText as text
end tell
else
tell application "RagTime 6.6"
set preset type of cell "B1" of table 1 of document 1 to single line text
set cell "B1" of table 1 of document 1 to sampleText as text
end tell
end if
-- SCRIPT END

Falls dieses Beispiel hilfreich ist, würde ich mich über feedback freuen.

Thomas Eckert
RagTime Support