Benvenuto Visitatore ( Log In | Registrati )
![]() ![]() |
6 Dec 2006, 04:44
Messaggio
#1
|
|
|
Salve a tutti
premetto che non so quasi nulla da Applescript il mio problema è che devo modificarene uno per inviare SMS in modo da poterlo fare da dentro filemaker. le modifiche vanno bene e tutto funziona a meraviglia… sono quasi soddisfatto che scopro con orrore il fatto che i miei SMS sono limitati a 70 caratteri invece dei normali 160… Mi danno un poco a capire ed alla fine scopro che Filemaker passa il testo in Unicode - il programmino che invia gli SMS lo gestisce ma, naturalmente - direte voi - lo spazio diminuisce. fantastico mi dico devo solo trasformare nell'Applescript che invio con filemaker il testo unicode in text normale… splucio un poco la AppleScriptLanguageGuide e trovo che posso farlo con as… bellissimo ma non mi funziona io scrivo: set paolo to "Ciao Ciao Ciao" as string dove in realtà "Ciao Ciao Ciao" è il contenuto del campo filemaker con il testo unicode text gli chiedo dopo class of paolo e lui mi dice correttamente string ma poi quando arriva al programmino è sempre unicode con il limite dei 70 caratteri. Immagino che per voi sia una sciocchezza… ma dove sbaglio ? Cioa e grazie Peace -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
|
|
|
6 Dec 2006, 09:41
Messaggio
#2
|
|
|
Ho scoperto dopo che consultavo una
AppleScript Language Guide d'annata (1.3.7 may 5,1999) come dire che ho perso tempo (alle 4,44 di notte). Ma su quella attuale la parola Unicode neppure esiste. Eppure la differenza fra il testo scritto normale e quello unicode esiste eccome. Non so proprio come fare. ma ci dev'essere il modo. Aspetto voi guru. Ciao Peace -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
6 Dec 2006, 10:24
Messaggio
#3
|
|
|
Ciao Paolo,
piacere incontrarti da queste parti Dovrebbe bastare una piccola conversione in "text" per risolvere il tuo problema: CODICE tell document 1 of application "FileMaker Pro" set myText to contents of field 4 of record 1 set normalText to myText as text end tell Scrivendo (sempre via AS) la stringa del campo FM in un file per testare la differenza ("Oggi è mercoledì. Domani sarà giovedì e presto sarà Natale.") la versione unicode pesa 404 bytes, la versione text 345. Buon scripting Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
7 Dec 2006, 02:31
Messaggio
#4
|
|
|
Ciao Farid
se ho capito il passo decisivo che tu fai è CODICE set normalText to myText as text
dopo aver recuperato in myText il contenuto in unicode. Questa è esattamente la strada che ho tentato io ma per ragioni a me oscure non sembra funzionare. Credo che il problema stia nel contesto - ma per spiegarlo devo denunciare la mia totale ignoranza sul modo di lavorare degli AS ed un po' mi vergogno. Il servizio che invia gli SMS mette a disposizione una microapplicazione "SMS Mac Scripting" a cui inviare gli AS e che provvede al resto. Io posso inviarglieli dallo Script Editor ( e risultaranno testo normale, non unicode ) oppure da filemaker. Mettono a disposizione un piccolo esempio di script: CODICE tell application "SMS Mac Scripting"
set account to "john.doe@mac.com" set pin to "1234" set m to make new outgoing sms with properties {flash:false} tell m set message to "Don't forget to go to the dry cleaner!" set recipients to {"+12345678900", "+1345678901"} set sender to "+14567890123" set delivery report to true try send on error errMsg number errNum display dialog "Error: " & errNum & ". " & errMsg end try end tell end tell come tu ben sai da filemaker io invio un AS preparando il suo testo in un campo calcolato - così infatti ho fatto anch'io e devo dire che il tutto funziona benissimo, problema unicode a parte. FM nel calcolato sostituisce al nome dei campi il loro contenuto e passa il testo dell' AS a SMS Mac Scripting che fa bene il suo lavoro. Ora dovunque e comunque io inserisca la trasformazione (coercion) da unicode a text per la stringa che deve andare a costituire il message…questo passaggio sembra non funzionare. Faccio un esempio: Poniamo che il mio Campo_Messaggio contenga "Supercalifragilistichespiralidoso" ovviamente in unicode il campo calcolato Testo_per_Apple_Script sarà : CODICE tell application "SMS Mac Scripting"
set account to "john.doe@mac.com" set pin to "1234" set myText to "supercalifragilistichespiralidoso" set normalText to myText as text set m to make new outgoing sms with properties {flash:false} tell m set message to normalText set recipients to {"+12345678900", "+1345678901"} set sender to "+14567890123" set delivery report to true try send on error errMsg number errNum display dialog "Error: " & errNum & ". " & errMsg end try end tell end tell Questo non funziona. Ora mentre ti scrivo mi viene in mente una possibile ragione: in realtà io passo un AS che provenendo da un campo FM - il calcolato Testo_per_Apple_Script - è a sua volta tutto scritto in Unicode… e non solo la stringa myText. Però non saprei neppure come fare diversamente, in teoria - ma qui la mia ignoranza dei processi AS potrebbe farmi dire una stupidaggine - mi verrebbe da dire che SMS Mac Scripting pur ricevendo un messaggio AS tutto in Unicode dovrebbe eseguirlo trasformandone una parte come da istruzioni da unicode a text normale, ma proprio non lo fa. Oppure sono io che sono incapace di farglielo fare, però come vedi il problema non sta nella istruzione coercitiva "as text" ma , pur detto impropriamente, nel contesto in cui forse sto cercando di usarla. Spero, tutto sommato, di essere stato sufficientemente chiaro, nonostante la mia vergognosa abissale ignoranza di Applescript. Ciao Peace e grazie per la collaborazione. -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
7 Dec 2006, 04:05
Messaggio
#5
|
|
|
Ciao Paolo,
in un primo momento pensavo tu avessi ragione con il tuo sospetto che la conversione da Unicode a Text fosse invano perché FileMaker comunque passa l'intero contenuto del tuo campo in formato Unicode. Dato però che il testo passato non è il messaggio stesso bensì il codice AS da far eseguire a "SMS Mac" sono abbastanza convinto che non può essere così. Anzì, il dizionario, ovvero l'elenco dei classi e dei comandi di cui dispone "SMS Mac", dice chiaramente che la classe message è di default di tipo text e quindi non ci sarebbe neanche stato bisogno della conversione. Non è che ci siano strani caratteri all'interno del campo che costringono l'applicazione di utilizzare Unicode? Per verificare potresti copiare il contenuto del tuo campo calcolato da FileMaker in una finestra di ScriptEditor ed eseguire il comando da qui. Stanotte non ho voglia di abbonarmi al servizio e scaricarmi i vari componenti necessari per provare, forse durante il ponte Facci sapere & bonne chance Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
7 Dec 2006, 04:54
Messaggio
#6
|
|
|
Ciao farid
nottambulo anche tu vedo… già fatta la prova con script editor copio incollo tutto da FM a scripteditor = troppo lungo anche con la coercizione a text esplicita … adesso sempre sulla stessa finestra di ScriptEditor (con il testo copiato e incollato da FM) riscrivo direttamente il solo "supercalifragilistichespiralidoso" ossia il testo del campo esattamente così come era fra virgolette, quello che andrà in message… e il messaggio arriva tranquillo. Anche senza forzarlo a text. Ergo "è proprio il testo che fa testo" per dirla con un gioco di parole… ovvero che l'AS sia in unicode non interferisce ma che lo sia il testo del messaggio si. Evidentemente Scripteditor digerisce tranquillamente sia text semplice che unicode ma quando ci scrivi direttamente quello che scrivi è testo semplice. Comunque anche ScriptEditor non sembra capace di convertire… ovvero se il testo è unicode (perchè ottenuto con il copia incolla da FM) la coercizione as text non sembra funzionare. Ho provato persino a farla antecedere - sempre in Scripteditor - alla chiamata tell application "SMS Mac Scripting" ma il risultato è stato comunque errore SMS troppo lungo quindi unicode. Una rabbia perchè il limite di 70 caratteri è veramente troppo esiguo. Sembrava una banalità e invece mi sta facendo perdere la testa Comunque per fare delle prove non occorre che tu ti abboni al servizio, basta che tu scarichi il widget gratuito. Tu sicuramente sai con As farti restituire la stringa finale… quella che sarà passata a SMS MAC Scripting… la copi e la incolli sul widget e lui ti dice subito se è unicode o no, senza bisogno di spedire il messaggio e quindi anche senza abbonamento. Se la stringa è testo semplice è fatta la digerisce anche normalmente. Ciao a presto Peace P.S. l'errore di usare una vecchia AppleScriptLanguageGuide del 1999 mi ha fatto notare che in quella attuale la differenza fra unicode e text sembra non esserci. La tabella di pag 90 mostra solo da string a styled text. Nella guida del 99 c'era invece nella stessa tabella anche quella da unicode a text. Ancora più curioso: nella guida attuale se ricerchi la parola unicode non hai nessuna ricorrenza… praticamente non viene mai nominata. Cosa questo possa significare mi è del tutto ignoto. -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
7 Dec 2006, 05:23
Messaggio
#7
|
|
|
P.S. 2
cerca Unicode nell'aiuto in linea di Script editor. Sembra proprio che lo "digerisca" senza fare differenza. -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
7 Dec 2006, 15:33
Messaggio
#8
|
|
|
Hai provato con un doppio casting?
CODICE set originale to "Ã " Non ho FileMaker per controllare set unico to originale as Unicode text set normale to unico as string Se AppleScript non ce la fa, si potrebbe provare ad usare il comando da terminale textutil. Ciao Paolo -------------------- |
|
|
|
|
7 Dec 2006, 17:08
Messaggio
#9
|
|
|
Ho modificato lo script leggermente integrandolo in un database scritto ad hoc per fare un test (conoscendoti sono sicuro che la tua soluzione in FileMaker sarà molto più complessa, ma per sperimentare con "SMS Mac" dovrebbe bastare
Il database contiene i campi di testo theAccount, thePIN, theText, theRecipient, theSender e il campo calcolato AS_Code che contiene l'assemblaggio dei valori degli altri campi:
e due pulsanti "send SMS" che esegue lo script di AS_Code direttamente dall'interno di FileMaker e "ScriptEditor" che esporta il codice dello script in ScriptEditor per eseguirlo da qui. A me sembra che vadano entrambi i pulsanti, non riesco a capire però dove vedi se il messaggio di "SMS Mac" e di formato Text o Unicode. (Per il resto non lo vedo neanche usando il widget...) Buon lavoro Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
7 Dec 2006, 17:13
Messaggio
#10
|
|
|
PS: allego anche il codice FileMaker del calcolo per "AS_Code" così si fa prima se qualcun altro volesse provare:
CODICE "tell application "SMS Mac Scripting"" & ¶ &
"set account to " & """ & theAccount & """ & ¶ & "set pin to " & """ & thePIN & """ & ¶ & "set myText to " & """ & theText & """ & ¶ & "set m to make new outgoing sms with properties {flash:false}" & ¶ & "tell m" & ¶ & "set message to myText" & ¶ & "set recipients to " & """ & theRecipient & """ & ¶ & "set sender to " & """ & theSender & """ & ¶ & "set delivery report to true" & ¶ & "set c to class of myText as string" & ¶ & "set chars to count of characters of myText" & ¶ & "display dialog "Il tuo messaggio è di classe " & c & return & "ed è composto da " & chars & " caratteri." & return & "Inviarlo ora?" buttons {"Annulla", "OK"} default button 2 with icon 1" & ¶ & "if button returned of the result = "OK" then" & ¶ & "try" & ¶ & "send" & ¶ & "on error errMsg number errNum" & ¶ & "display dialog "Error: " & errNum & ". " & errMsg" & ¶ & "end try" & ¶ & "end if" & ¶ & "end tell" & ¶ & "end tell" Bon travail Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
7 Dec 2006, 20:03
Messaggio
#11
|
|
|
Ho trovato questa discussione http://bbs.applescript.net/viewtopic.php?id=12569 su MacScripter, forse può essere utile.
Per Farid : da dove vengono tutti quei "& ¶ &" alla fine di ogni linea del tuo script ? ciao |
|
|
|
|
7 Dec 2006, 20:51
Messaggio
#12
|
|
|
Ciao farid
ho preso il tuo calcolo e l'ho sosituito al mio si è popolato ma nell'invio ha fallito per testo troppo lungo. Questo da FM 8.5 ma anche da script editor. Infatti se prendo il tuo calcolo dopo che è stato eseguito o polpolato e lo copio incollo in script editor il risultato è lo stesso. Per quanto riguarda il widget è semplice: sempre da script editor con il tuo codice popolato - copiato da FM e quindi unicode - ho sostituito l'istruzione send con l'istruzione return mytext a questo punto quando lo eseguo in script editor mi appare sotto il risulatato myText… lo selezioni e lo copi incolli sul Widget e lui ti dice di quanti caratteri è e se è o no unicode. Ciao Paolo P.S. Ma scusa a te funziona ? anche con più di 70 caratteri ? -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
7 Dec 2006, 21:39
Messaggio
#13
|
|
|
CITAZIONE(Peace) P.S. Ma scusa a te funziona ? anche con più di 70 caratteri ? Lo posso solo confermare per quanto riguarda la "meccanica": lo script, lanciato sia da FileMaker sia da ScriptEditor funziona; ad un certo punto ovviamente arriva un messaggio di errore da parte di "SMS Mac" perché non ho nessun account e nessun PIN per inviare dei messaggi sul serio. Comunque è bella strana questa cosa: il testo passato da AppleScript è "testo nudo e crudo", non so perché SMS Mac lo interpreti come Unicode. Potresti mandarci un esempio vero invece della citazione di Pipi Calzalunga CITAZIONE(Luigi) Per Farid : da dove vengono tutti quei "& ¶ &" alla fine di ogni linea del tuo script ? E' la formattazione dello ScriptEditor di FileMaker che non c'entra niente con l'AppleScript Editor; i "&" concatenano stringe e simboli, i "¶" sono dei "vai a capo" (come il "return" di AS) Saluti Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
7 Dec 2006, 23:02
Messaggio
#14
|
|
|
Ciao farid
hai ragione. non dannarti su As il problema sta in Fm per la precisione in una delle mie complicazioni. In certi casi il risultato del calcolato è semplice testo in altri casi è unicode. Non so esattamente ancora dove sta il "bivio" ma non è di sicuro nella stringa o in suoi caratteri. comunque se è FM lo scoverò e vi darò sicuramente l'esito di questa ricerca. Sono certo di aver risolto mio problema e vi ringrazio tutti. Il problema pratico è a posto ma da un punto di vista teorico (che rompiballe che sono) non si capisce bene in As quando sia semplice testo e quando unicode - entrambi sono di classe = string o text che dir si voglia - e sopratutto non si sa ora come convertire unicode a testo semplice in AS. Di fatto in Script editor se metto una stringa unicode non riesco a trasformarla in testo semplice con as string perchè unicode è esso stesso di classe string. Ritornando ad Fm per domattina vi saprò dire quel'è l'elemento del calcolo, la funzione o la relazione… o il mio errore che forza la stringa ad unicode. Per stasera devo fermarmi qui dopo il piccolo, che finalmente dorme, ora è la moglie che - giustamente - mi reclama. Ciao a tutti e grazie. Peace & Son ……& wife -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
8 Dec 2006, 12:50
Messaggio
#15
|
|
|
Ciao a tutti
come promesso eccomi a darvi gli esiti della nottata… Per la verità ho rischiato di dovermi rimangiare la mia sicumera circa il fatto che "se il problema era FM l'avrei sicuramente e rapidamente risolto". Invece ci sono diventato pazzo. A un certo punto non riuscivo proprio più a riprodurre l'errore ossia il testo FM in unicode… i messaggi partivano nella notte come proiettili di mitragliatrice… Alla fine è saltato fuori il problema: tutto stava in un apostrofo nero fra le parole "m'incazzo" (perdonatemi l'espressione colorita). Il fatto è che la frase conteneva la parola "l'appuntamento" e quell'apostrofo scritto in Fm risulta unicode scritto con altri programmi no perchè in realtà è, credo, un apice. Di fatto uno è leggermente inclinato l'altro , invece, perfettamente verticale. Ma io usavo sempre lo stesso tasto della tastiera pro, quello che sopra ha il ?, solo che in FM produce una cosa, in script editor o text edit un'altra. Forse da un punto di vista formale ha ragione Fm un apice non è un apostrofo però certo sarebbe cosa buona uniformare la tastiera: o quel tasto produce apici o apostrofi. Una cosa da dannarsi l'anima anche perchè i miei occhi non sono più quelli di un tempo e la dimensione del font era normalmente piccolina 12p . Mi spiace aver tirato dentro Aplle script e voi per una piccolissima "caccola" inclinata che FileMaker produce diversamente… Circa le conversioni in AS da unicode a testo semplice… chi lo sa. Probabilmente neppure esiste nel semplice testo l'apostrofo vero e proprio e quindi non può essere convertito. grazie comunque a tutti Peace -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|
8 Dec 2006, 13:08
Messaggio
#16
|
|
|
La sostituzione apice/apostrofo è una funzione utilizzata dalla gran parte delle applicazioni Apple (vedi Pages - FileMaker è prodotto da Apple
Puoi disabilitare la conversione andando dentro FileMaker al menu File > Opzioni file… > Testo. Ciao Paolo -------------------- |
|
|
|
|
8 Dec 2006, 13:47
Messaggio
#17
|
|
|
CITAZIONE(chebfarid) Non è che ci siano strani caratteri all'interno del campo che costringono l'applicazione di utilizzare Unicode? CITAZIONE(poweruser) Puoi disabilitare la conversione andando dentro FileMaker al menu File > Opzioni file… > Testo. Bravo! Anche a me era venuto in mente che potrebbe aver che fare con l'uso degli "Smart Quotes" ma ero troppo cotto per indagare Sembra comunque che la regola di AS sia che nel caso di combinazioni fra stringhe di testo e stringhe Unicode abbia prevalenza la seconda perché offre un più ricco assortimento di caratteri. AS di default ora usa Unicode UTF-16. Saluti Farid -------------------- Abends lustig, morgens triste
das ist Leben von Artiste |
|
|
|
|
8 Dec 2006, 15:24
Messaggio
#18
|
|
|
Bingo
Complimenti a tutti e due. Ciao Peace -------------------- 4 Anni ormai dall'annuncio su Tevac
18/5/2004 15:24 Little Peace is here |
|
|
|
|