Allouer une ligne pour la saisie de données
Pour ajouter des données à une nouvelle ligne, vous étiez sur la bonne voie avec votre premier script où vous avez écrit dire à la table sélectionnée d'ajouter une ligne en dessous de la dernière ligne
. Vous deviez simplement faire référence à cette nouvelle ligne créée lorsque vous définissiez les valeurs de cellule 1
, cellule 2
et cellule 3
, qui étaient autrement référencées comme appartenant à la table sélectionnée au lieu d'une ligne
spécifique dans la table sélectionnée
:
set donnéesÀAjouter to {¬
maDateDuFichierPlist, ¬
monHeureDuFichierPlist, ¬
l'IDDuFichierPlist}
dire à l'application "Numbers" de dire ¬
au document frontal de dire ¬
à la feuille active de dire ¬
à table 1
set R to ajouter une ligne en dessous de la dernière ligne
dire à R de ¬
répéter avec i de 1 à compter donnéesÀAjouter
définir la valeur de la cellule i à ¬
élément i dans donnéesÀAjouter
fin répéter
fin dire
J'ai décidé d'envelopper le réglage des valeurs de cellule à l'intérieur d'une boucle répéter
, parce que—en théorie—vous pourriez avoir 50 cellules auxquelles assigner des valeurs, et cela sauve un peu de frappe, en plus de rendre le code un peu plus facile à lire.
Cependant, notez que cellule i
à l'intérieur de la boucle répéter
fait partie d'une déclaration dire à R
, où R
est la référence à la nouvelle ligne
juste créée. Cela indique au script que c'est la cellule i
de cette nouvelle ligne
qui devrait se voir attribuer les valeurs stockées dans donnéesÀAjouter
, et non simplement la cellule i
de table 1
(je suppose que votre feuille
n'a qu'une seule table, auquel cas il n'est pas nécessaire de s'embêter avec la longue phrase première table dont la classe de la plage sélectionnée est une plage
. Cependant, s'il s'avère que j'ai eu tort, il est toujours préférable de donner des noms à vos tables, que vous pouvez ensuite référencer spécifiquement depuis votre script, plutôt que par le biais d'un espoir très ténu que la table sélectionnée sera toujours la bonne table).
Quelques points sur le contenu de votre question et l'extrait de code
Pour le moment, voici la meilleure aide que je puisse vous apporter.
Si je peux vous donner un conseil, lorsque vous posez une question, bien qu'il soit excellent que vous ayez posté votre extrait de code, il est bien plus utile de a) poster un extrait de code qui compile (le vôtre ne l'est pas ; l'Éditeur de Script signale une fin de fichier inattendue lors de sa compilation, car votre extrait de code est incomplet) ; b) inclure suffisamment de code parmi le grand tout pour qu'il puisse être exécuté sur le système d'une autre personne, ce qui signifie que les variables et autres devraient être définies dans l'extrait de code—actuellement, je n'ai aucune idée de ce que sont ou contiennent les variables maDateDuFichierPlist
, monHeureDuFichierPlist
et l'IDDuFichierPlist
, je ne peux donc pas, par exemple, vous aider concernant la raison pour laquelle votre utilisation de la RAM a augmenté.
Je soupçonne qu'il y a toute une partie de code qui précède ce bloc Numbers, où vous avez accédé à votre fichier plist
pour en récupérer les données. Il se pourrait que ce soit dans la manière dont vous avez fait cela que votre mémoire soit consommée.
En guise de dernière critique, bien que la gestion des erreurs soit une bonne idée, je laisserais cela de côté jusqu'à ce que votre script soit finalisé, car ses blocs actuels de piégeage incluent trop de lignes de code où des erreurs différentes pourraient être capturées : par exemple, si vous recevez un code d'erreur 1001, cela pourrait être dû au fait qu'il n'y a pas de feuille active
; ou qu'il n'y a pas de plage sélectionnée
; ou qu'il s'est produit quelque chose de mauvais en assignant des valeurs à une cellule
, qui pourrait être cellule 1
, cellule 2
ou cellule 3
, mais aurait pu résulter d'un problème avec ligne 2
ou l'une des variables. De plus, vous avez deux blocs essayer
emboîtés l'un dans l'autre, ce qui est assez cavalier.
**
Si vous avez besoin de plus d'aide...
Si vous êtes satisfait de la solution que cette réponse offre concernant votre problème d'allocation de ligne et d'insertion de données, alors je suis content que cela ait été facile à résoudre. Si vous avez d'autres questions à ce sujet, laissez un commentaire et je vous répondrai. Si vous souhaitez fournir plus d'informations concernant votre script, vos variables, etc., nous pouvons essayer de déterminer d'où vient cette consommation de mémoire. Comme vous l'avez mentionné dans votre commentaire "avec cette méthode, ma RAM s'envole par la fenêtre", il serait utile de savoir ce qui différait entre votre première méthode et celle qui a généré la consommation de mémoire, ce qui pourrait, bien sûr, vous obliger à poster deux scripts.
Pour les besoins de ceci, vous pouvez utiliser un service de partage en ligne. Pastery ne nécessite ni nom d'utilisateur ni mot de passe, et dispose d'une coloration syntaxique pour AppleScript, mais il n'est qu'un parmi tant d'autres. Pastebin ne nécessite aucune connexion du tout. C'est utile à utiliser sur les sites Web de la communauté Stack Exchange lorsque vous souhaitez/fournir un code supplémentaire spécifiquement demandé, mais qui n'est pas réellement nécessaire pour le point principal de la question elle-même, où un bloc de code a déjà été fourni et en fournir davantage risquerait d'engloutir la question dans une mer de gris.
**