The main issue is that by specifying a number, Me.Book[#] and Me.CombatAbility[#] will return objects based on their slot/list number.
This is normally not an issue because the numbers are higher and those entries are empty and return NULL.
The problem you will encounter is you get different object types based on the input you supply.
For example:
"Light Healing" = ${Me.Book[Light Healing]} = int
"1" = ${Me.Book[1]} = spell
So if I provide the spell name I get back an int that can be parsed in a conditional. If I provide an int, then I will get back a 'spell' object that will fail parsing due to non-numeric value.
There may be many other ways to solve this issue, but the simplest I found was simply to wrap them in a Bool[]. If you get back an int or a spell, it will be TRUE, otherwise it will be FALSE.
There is at least three lines (if not more) that will have to be updated in order to support an input with a low integer: 2546, 2581, 9921 (based on version 11.001)
2546: /if (${castWhat.Find[command:]} || ${Bool[${Me.AltAbility[${castWhat}]}]} || ${Bool[${Me.CombatAbility[${castWhat}]}]} || ${FindItem[=${castWhat}].ID} || ${Bool[${Me.Ability[${castWhat}]}]} || ${Bool[${Me.Book[${castWhat}]}]}) {
2581: /if (${ReadyToCast}==5 && ${Me.SpellReady[${castWhat}]} && ${Bool[${Me.Book[${castWhat}]}]} && ${Spell[${castWhat}].Mana}<${Me.CurrentMana}) /call CastSpell "${castWhat}" ${WhatID} ${sentFrom} ${CastOnCorpse}
9921: /if (!${Bool[${Me.Book[${iniKey}]}]} && !${Bool[${Me.CombatAbility[${iniKey}]}]} && !${Bool[${Me.AltAbility[${iniKey}]}]} && !${FindItem[=${iniKey}].ID} && ${iniKey.NotEqual[banestrike]} && !${Bool[${Me.Ability[${iniKey}]}]}) {
I'm sure there are other issues using numbers, for example you want to use CombatAbility 4, which would also select book slot #4. Does it cast the ability or the spell? Depends on which one gets processed first.
My personal thoughts on this is to expand the 'spell name/item name/aa ability/etc' field to be a complex type: spell:light healing, item:breastplate, aa:180. This way there is no confusion, you know exactly how to process it. (I dont expect to see this, this is just my thoughts on what would be nice to support)