I was on mobile without my glasses for my earlier post so I couldnt read RainbowEncoder's method. That's a clever way to handle it, and it is expandable to different kinds of dice pretty easily (if laboriously).
For the Rollable Table method, you'd create a separate table for each of d4, d6, d8, d10, and d12. The minimum roll value would have an increased weight. d4 would be 2: weight 2, 3: weight 1, 4: weight 1. Basicaly the weight is the number of times you can roll that number on each die.
Then you roll it like a die with slightly different syntax.
3d6 would be /r 3d6
3 of the special d6 would be /r 3t[d6]
just use t[table-name] whereever you would normally use d6 or d8 or whatever.
Your original macro was this:
&{template:default} {{name= Pinpoint Lightning}} {{attack= [[1d20 +
@{power_attack_bonus}]]}} {{damage= {[[1d6]],2}kh1 + {[[1d6]],2}kh1 +
{[[1d6]],2}kh1 + {[[1d6]],2}kh1 + {[[1d6]],2}kh1 + {[[1d6]],2}kh1 +
{[[1d6]],2}kh1 + {[[1d6]],2}kh1}} {{range= 100ft}}
That would become:
&{template:default} {{name= Pinpoint Lightning}} {{attack= [[1d20 +
@{power_attack_bonus}]]}} {{damage= [[8t[d6] ]]}} {{range= 100ft}}
And how that macro might look:

and yes, you can use d4, d6, d8, etc., as table names.
It takes a little time to set up the rollable tables you need, but once done, they are easy to use, and you can even mix them with non-table rolls, like 3d6 + 3t[d6].