14 Replies Latest reply on Feb 12, 2019 11:20 AM by J Grant Gray


    DeAnna Humphrey

      I have a token script that is working in one workspace but not in another.  The script for whatever reason is pulling the value of a different Salesforce field.  See screenshots below to see the error. 


      Here is the script token I am using:

      ## First, covert the variable to currency format

      #set($total = $number.currency($$$${lead.Bonus_Gift_Card_Amt__c})) ##our code from before, e.g., $121,237.10

      #set($stringLength = $total.length() - 3) ##get the total string length and calculate what we want to keep, e.g., 8 --note the specific spacing between the commands here! screwing up the syntax will crash it (e.g. if you remove the space)

      #set($totalb = $total.substring(0,$stringLength)) ##takes the sub string of just the first 3 characters, e.g., $121,237

      ## Then, for the email output


          Sanford Whiteman



          1. Highlight the code using the Advanced Editor's syntax highlighter so it's readable.

          2. Include the images directly in the post, not as attachments. Not all Community users can see attachments and it's very confusing.

            Nicholas Manojlovic

            You need two scripts.


            Script A is for your interest savings, and it references the interest savings field.


            Script B is for your gift card amount, and it references the gift card field.


            Your email will then be able to insert {{my.interest savings}} and {{my.gift card}} as two separate tokens.


            I reckon you have found 'script B' but when you look at your email, you will see that it is referencing 'script A' (twice).

            1 of 1 people found this helpful
              Sanford Whiteman

              I'm going to copy, paste, and highlight your code myself so I can correct your syntax. Please highlight in future posts.


              #set($total = $number.currency($$$${lead.Bonus_Gift_Card_Amt__c})) ##our code from before, e.g., $121,237.10


              This is not the correct way to use dollar signs in Velocity.  The only reason it happens to work is that Velocity ignores multiple $ in a row (undocumented behavior; the VTL parser is currently loose in this way, though it may not be in the future). And you also should be using $simple notation, not ${formal}, as discussed in many other posts.


              So the syntactically correct line is


              #set( $total = $number.currency($lead.Bonus_Gift_Card_Amt__c) ) ##our code from before, e.g., $121,237.10


              You have another overly fragile line here (as your comment says):


              #set($stringLength = $total.length() - 3) ##get the total string length and calculate what we want to keep, e.g., 8 --note the specific spacing between the commands here! screwing up the syntax will crash it (e.g. if you remove the space)


              But that fragility ("screwing up the syntax will crash it") is because you're not subtracting using the right syntax, which is


              #set( $stringLength = $math.sub($total.length(), 3) )


              That won't crash just by removing whitespace.


              Perhaps most important, the whole subtract-from-length-and-truncate logic is unnecessary.  You only needed one line. Cast to Integer, which takes the floor of the number, then supply a number format:


              #set($total = $number.format('$###,###', $convert.toInteger($lead.Bonus_Gift_Card_Amt__c)))


              This will turn


                   121237.10 ⇒ $121,237

                   121237.90 ⇒ $121,237


                • Re: TOKEN SCRIPT NOT WORKING!
                  DeAnna Humphrey



                  You are awesome and I appreciate your help.  However, you assume I know the

                  code.  I do not. I am learning as I go.  So your input is helpful for me

                  but the way you show me in your how to steps doesn't make complete sense to

                  me.  The original script was what was given to me a while back and it was

                  working fine in one of my workspaces and when I copied and pasted it to my

                  second workspace it as you said above crashed.


                  Thanks again for all your assistance and in the future realize not everyone

                  working in Marketo knows how to work with the code.






                  On Mon, Feb 11, 2019 at 8:40 PM Sanford Whiteman <

                    • Re: TOKEN SCRIPT NOT WORKING!
                      Sanford Whiteman

                      Well, if you don't understand what code is supposed to do at all, it's impossible to explain to others the difference between the desired/expected result and the observed (real-world) result.


                      But it doesn't take any understanding of the code to at least highlight it properly so people -- including the visually impaired -- can read it and try to reason through it. That's just best practice when looking for help from a Community.


                      My point was that the code is unnecessarily fragile + difficult for others to understand (and uses broken syntax that works more out of luck than anything else).  It's more stable + easier to understand if you use only the last line I provided. The bulk of the Velocity code was ultimately unnecessary.


                      As Nicho points out, you may primarily be confused about how many tokens you have in the other workspace.  I don't know, as I still can't see your images because you didn't paste them inline. Look closely at the emails in the other workspace, check the names of the {{my.tokens}} in the email, and find them in the Marketing Activities tree.