You can also exchange gems with other trainers at the gem
collector
Do this by going to Gem Collector > Gem Exchange.
And you can also get gems by trading at GTS and rumbling.
Also, fishing at Emera Beach gets gems, although it is hard to get
gems there, but I have already gotten 16 gems there.
Royal Tunnel (if ur good at pokemon trivia ofc)
Dream World Shop
Rumbling
Spinning the Plus mode at the golden game slot in the game center
to get a few gems
Trading/buying
Opening Mystery boxes
probably the best method (in my opinion) on getting Gems is sending
Plushies out to other players and rumbling on the Galar Rumble Map.
Galar's probably the best overall, since you have a chance of
getting any of the Gems (including Dragon Gems) and Dynamax
Crystals (which are required for obtaining any of the Giga
pokemon). Though, the downside of using Galar is the fact that
it'll cost 5k Gems spent at the Gem Collector to even unlock the
Map.
i would not recommend to obtain ditto by spending 10k normal
gems...you can get it much cheaper by buying it.
i´d recommend using random gems to speed up hunts when trying to
unlock the galar-map.
Also: the best/fastest ways in my eyes (besides buying gems) are
gifting plushies and the royal tunnel (the first one requires lots
of dp/a high dream world level and the second one might need a lot
of training)
all ways to get gems:
1. spending dp at dw shop: every 5 spent dp gives 1 gem
2. rumbling: rumbling in different areas give different gems, each
area has specific type of gem only. check PH wiki for more
info.
3. Trading from GTS>public trades / bying from GTS>item
market
4. treasure hunt boxes/ mystery boxes
5. spinning in plus slot in Game center>golden game slot
6. fishing at emera beach
thats all i know at the moment
Hope it helps ^^