In general, be careful about referring to an effect by its name as it can be renamed by the user. You can use the matchName as I'm mostly doing in my example. This is the language independent internal name for an effect/property which isn't affected by renaming.
var puppetEffect = activeItem.layer(1).effect("ADBE FreePin3");
And of course an effect might have more than one of the same effect, so you could also loop through the properties in the "ADBE Effect Parade" group (ADBE Effect Parade is matchName for the Effects group) looking for instances of the Puppet effect.
But these kinds of safeguards are only necessary if the script will be used by other people and you want to make it foolproof.