Here is the same script in bookmarklet form, ready to be added to your bookmarks:
javascript:(function()%7B(function%20()%20%7B%2F%2F%20copyToClipboard%20via%20%3Chttps%3A%2F%2Fgist.github.com%2FChalarangelo%2F4ff1e8c0ec03d9294628efbae49216db%2F%23file-copytoclipboard-js%3Econst%20copyToClipboard%20%3D%20str%20%3D%3E%20%7Bconst%20el%20%3D%20document.createElement('textarea')%3B%20%20%2F%2F%20Create%20a%20%3Ctextarea%3E%20elementel.value%20%3D%20str%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Set%20its%20value%20to%20the%20string%20that%20you%20want%20copiedel.setAttribute('readonly'%2C%20'')%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Make%20it%20readonly%20to%20be%20tamper-proofel.style.position%20%3D%20'absolute'%3Bel.style.left%20%3D%20'-9999px'%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Move%20outside%20the%20screen%20to%20make%20it%20invisibledocument.body.appendChild(el)%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Append%20the%20%3Ctextarea%3E%20element%20to%20the%20HTML%20documentconst%20selected%20%3Ddocument.getSelection().rangeCount%20%3E%200%20%20%20%20%20%20%20%20%2F%2F%20Check%20if%20there%20is%20any%20content%20selected%20previously%3F%20document.getSelection().getRangeAt(0)%20%20%20%20%20%2F%2F%20Store%20selection%20if%20found%3A%20false%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Mark%20as%20false%20to%20know%20no%20selection%20existed%20beforeel.select()%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Select%20the%20%3Ctextarea%3E%20contentdocument.execCommand('copy')%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Copy%20-%20only%20works%20as%20a%20result%20of%20a%20user%20action%20(e.g.%20click%20events)document.body.removeChild(el)%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Remove%20the%20%3Ctextarea%3E%20elementif%20(selected)%20%7B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20a%20selection%20existed%20before%20copyingdocument.getSelection().removeAllRanges()%3B%20%20%20%20%2F%2F%20Unselect%20everything%20on%20the%20HTML%20documentdocument.getSelection().addRange(selected)%3B%20%20%20%2F%2F%20Restore%20the%20original%20selection%7D%7D%3B%2F%2F%20https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FJavaScript%2FReference%2FGlobal_Objects%2FJSON%2Fstringify%23The_replacer_parameterconst%20getSchemaReplacer%20%3D%20()%20%3D%3E%20%7Bconst%20seen%20%3D%20new%20WeakSet()%3Breturn%20(key%2C%20value)%20%3D%3E%20%7Bif%20(%20key%20%3D%3D%3D%20'sampleRows'%20)%20%7Breturn%20undefined%3B%7D%20else%20if%20(key%20%3D%3D%3D%20'foreignTable')%20%7Blet%20ftobj%20%3D%20%7B%20%22id%22%20%3A%20value.id%20%2C%20%22name%22%20%3A%20value.name%20%7D%3Breturn%20ftobj%3B%7D%20else%20if%20(typeof%20value%20%3D%3D%3D%20%22object%22%20%26%26%20value%20!%3D%3D%20null)%20%7Bif%20(seen.has(value))%20%7Breturn%3B%7Dseen.add(value)%3B%7Dreturn%20value%3B%7D%3B%7D%3Blet%20serializedSchema%20%3D%20JSON.stringify(window.application%2CgetSchemaReplacer()%2C2)%3Blet%20schema%20%3D%20JSON.parse(serializedSchema)%3Blet%20info%20%3D%20%60%24%7Bschema.name%7D%20(%24%7Bschema.id%7D)%60%3BcopyToClipboard(serializedSchema)%3Balert(%60Copied%20to%20Clipboard%3A%5CnJSON%20for%20%24%7Binfo%7D%60)%3Bconsole.log(serializedSchema)%3B%7D)()%7D)()