Assegnazione riga per immissione dati
Per ottenere i dati aggiunti a una nuova riga, eri sulla strada giusta con il tuo primo script in cui hai scritto tell the selectedTable to add row below last row
. Dovevi semplicemente fare riferimento a questa riga appena creata quando imposti i valori di cell 1
, cell 2
e cell 3
, che venivano altrimenti referenziati come appartenenti a selectedTable
invece di uno specifico row
nella selectedTable
:
set dataToAdd to {¬
myDateFromPlist, ¬
myTimeFromPlist, ¬
theIDFromPlist}
tell application "Numbers" to tell ¬
the front document to tell ¬
the active sheet to tell ¬
table 1
set R to add row below last row
tell R to ¬
repeat with i from 1 to count dataToAdd
set value of cell i to ¬
item i in dataToAdd
end repeat
end tell
Ho deciso di racchiudere l'impostazione dei valori di cella all'interno di un ciclo repeat
, perché, in teoria, si potevano avere 50 celle per assegnare valori, e questo risparmia un po 'di digitazione, inoltre rende il codice un po' più facile lettura.
Tuttavia, nota che cell i
all'interno del ciclo repeat
è, a sua volta, parte di un'istruzione tell R
, dove R
è il riferimento al nuovo row
appena creato. Questo dice allo script che è cell i
di questo nuovo row
a cui dovrebbero essere assegnati i valori memorizzati in dataToAdd
, e non semplicemente cell i
di table 1
(sto assumendo che il tuo sheet
abbia solo una tabella , nel qual caso non c'è bisogno di preoccuparsi del lungo% difirst table whose class of selection range is range
. Se, tuttavia, ho assunto erroneamente, allora è ancora meglio dare i nomi delle tabelle, che puoi quindi fare riferimento in modo specifico al tuo script, piuttosto che a modo di una speranza molto tenue che la tabella selezionata sarà sempre la tabella corretta).
Alcuni punti sul contenuto della domanda e sullo snippet di codice
Al momento, questa è la massima assistenza che posso dare.
Se posso consigliarti, nel pubblicare una domanda, mentre è bello che hai postato il tuo snippet di codice, è molto più utile per a) pubblicare un frammento di codice che compila (il tuo no; < em> Script Editor segnala una fine imprevista del file quando si tenta di compilarlo, perché lo snippet di codice è incompleto); b) include abbastanza codice del complesso più grande in modo che possa essere eseguito sul sistema di qualcun altro, il che significa che le variabili e tali devono essere definite all'interno dello snippet di codice: al momento, non ne ho idea quali sono le variabili myDateFromPlist
, myTimeFromPlist
e theIDFromPlist
che sono o contengono, quindi non può, ad esempio, aiutarti a capire come mai l'utilizzo della RAM è aumentato.
Sospetto che ci sia un sacco di codice che precede questo blocco Numeri , in cui hai avuto accesso al tuo file plist
per recuperare i suoi dati. Potrebbe essere qualcosa nel modo in cui hai fatto ciò che ha consumato la tua memoria.
Come ultima critica, mentre la gestione degli errori è una buona idea, lascerei da parte fino a quando il tuo script non sarà finalizzato, perché i suoi attuali blocchi di intrappolamento includono troppe righe di codice in cui diversi errori potrebbe essere catturato: ad esempio, se ricevi un codice di errore di 1001, potrebbe essere perché non c'è active sheet
; o non c'è selection range
; o che qualcosa è andato storto con l'assegnazione di valori a cell
, che potrebbe essere cell 1
, cell 2
o cell 3
, ma potrebbe essere stato il risultato di un problema con row 2
o una delle variabili. Inoltre, hai due blocchi di% co_de annidati l'uno dentro l'altro, che è piuttosto sprezzante.
Se desideri ulteriore assistenza ...
Se sei soddisfatto della soluzione, questa risposta fornisce il tuo problema di allocazione delle righe e inserimento dei dati, quindi sono felice che sia stata una soluzione facile. Se hai altre domande su questo, lascia un commento e tornerò da te. Se vuoi fornire maggiori informazioni sul tuo script, sulle variabili e su cosa no, possiamo provare a scoprire da dove proviene questo consumo di memoria. Come hai detto nel tuo commento "con questo metodo sebbene la mia RAM stia saltando fuori dalla finestra", sarebbe utile sapere che cosa era diverso tra il tuo primo metodo e quello che generava il consumo di memoria , che potrebbe, ovviamente, richiedere di pubblicare due script.
Quello che puoi fare ai fini di questo è usare un cestino per incolla online. Pastery non richiede nomi utente o password e presenta l'evidenziazione della sintassi di AppleScript, ma è uno tra tanti. Copia spazio non richiede alcun tipo di accesso. È utile utilizzare i siti Web Stack Exchange quando si desidera / è necessario fornire codice aggiuntivo richiesto in modo specifico, ma non è effettivamente necessario per l'obiettivo principale della domanda stessa in cui è già stato fornito un blocco di codice e la fornitura di più rischierebbe di annegare il domanda in un mare di grigio.