Skip to content

Instantly share code, notes, and snippets.

@shixiaoyu
Forked from Snarp/google-docs-copy.js
Created January 22, 2023 01:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shixiaoyu/9ad93d7db4caf8f24b491f46ddb3f249 to your computer and use it in GitHub Desktop.
Save shixiaoyu/9ad93d7db4caf8f24b491f46ddb3f249 to your computer and use it in GitHub Desktop.
Script to allow copying from a protected Google Doc
/*
<https://stackoverflow.com/questions/40296831/is-it-possible-to-force-a-copy-of-a-protected-google-doc>
NOTE - 2021-05-24
-----------------
The script below isn't the fastest way to copy-and-paste from a protected
Google Doc. Before trying it, I'd suggest following MikoFrosty's advice from
the comments:
1) Change the end of the document url from `/edit` to `/mobilebasic`.
2) Disable Javascript (as described in steps 2 and 3 below).
3) Keeping the console open, reload the page.
That should be enough to allow you to copy freely. The script here is
*probably* only necessary if the /mobilebasic view isn't rendering something
correctly.
HOW TO USE
----------
1) Open the protected Doc using Chrome. Scroll all the way down to the bottom
to make sure that it is entirely loaded.
2) Open Chrome Developer Tools (<Ctrl+Shift+I>), and click "Console" to open
the Javascript Console.
3) Open the Command Console (<Ctrl+Shift+P>). Type "javascript", and select
the option "Disable Javascript" when it appears.
4) Copy the script below into the Javascript console.
5) Leaving the Javascript Console open, you may now copy-and-paste from the
document as normal. (Some formatting may be broken. Closing the console may
re-lock copy-and-pasting.)
6) (OPTIONAL) To copy the entire document as plain text (no formatting), type
the following into the console:
document.body.innerText
The text will be loaded into the Console itself; copy it by clicking the
gray-highlighted "COPY" at the end.
*/
function rtcScript() {
document.oncontextmenu = null;
document.onselectstart = null;
document.onmousedown = null;
document.onclick = null;
document.oncopy = null;
document.oncut = null;
var elements = document.getElementsByTagName('*');
for (var i = 0; i < elements.length; i++) {
elements[i].oncontextmenu = null;
elements[i].onselectstart = null;
elements[i].onmousedown = null;
elements[i].oncopy = null;
elements[i].oncut = null;
}
function preventShareThis() {
document.getSelection = window.getSelection = function() {
return {isCollapsed: true};
}
}
var scripts = document.getElementsByTagName('script');
for (var i = 0; i < scripts.length; i++) {
if (scripts[i].src.indexOf('w.sharethis.com') > -1) {
preventShareThis();
}
}
if (typeof Tynt != 'undefined') {
Tynt = null;
}
}
rtcScript();
setInterval(rtcScript, 2000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment