Copier des docs Google Sheet / Docs protégés

Coucou la famille Dyrkienne !

J'espère que vos vacances se passent bien et que vous profitez de ce beau soleil !

Je viens vers vous avec une petite astuce aujourd'hui, concernant les Googles Docs.
Pour plus de contexte, l'un de mes collègues de travail est venu me dire ce Lundi qu'il avait reçu un lien vers un fichier Google Sheet dont il ne pouvait pas copier le contenu.

Bref,  le genre de "challenge" qui me fait autant plaisir qu'un chien qui recevrait un os à moelle !

La sécurité dans Google Docs / Sheet / ...

Avant de vous fournir la technique pour y parvenir, je vous explique ici comment "protéger" / "sécuriser" vos documents Google Sheet (ou autres) contre la copie.

Tout d'abord, il vous faudra aller sur le bouton de partage de votre document.

Ensuite, il vous faudra cliquer dans le popup de partage, sur la petite roue crantée de réglage

Et enfin, il vous faudra décocher les actions que vous souhaitez "bloquer".

Voilà, maintenant avec ces réglages, selon le partage que vous ferez, la personne qui accédera à votre document pourra ou non télécharger le document.

Contourner cette "protection"

J'ai constaté dans le cas des Googles Sheet, que ceux-ci était directement intégrés ET mis en forme au format HTML au chargement de la page.

Ainsi, les protections sont forcément activées "après" le chargement de la page.

Cela signifie simplement qu'en observant le code source de la page, il est possible d'extraire directement le code HTML du document que vous souhaitez copier et de l'enregistrer dans un fichier HTML.
En ouvrant ce dernier dans un navigateur, il vous suffira de copier-coller son contenu dans un document vierge pour disposer d'une copie.

Pour plus de simplicité :

J'ai réalisé un code relativement simple qui vous permettra directement d'avoir dans votre navigateur la possibilité de copier-coller, sans avoir besoin de passer par un fichier intermédiaire.

  1. Ouvrez la console développeur (touche F12 du clavier ou bien "clic droit" inspecter / si cela ne fonctionne pas : explorez les menus de votre navigateur )
  2. Une fois que la "console" sera ouverte, allez sur l'onglet "console" et copiez-collez le code ci-dessous.
  3. Validez avec la touche "entrée"

(()=>{xhr = new XMLHttpRequest();
xhr.open('GET', location.href);
xhr.addEventListener('load', (evt) => {
    window.open(URL.createObjectURL(new Blob(["<scri".concat('pt nonce="',document.getElementsByTagName('script')[0].nonce,'">setInterval(()=>document.getElementById("waffle-grid-container").setAttribute("style","position:absolute;top:0px;left:0px;width:100%;height:100%;background:#FFF;z-index:1000000"), 3000)</scrip','t>', evt.target.response)] ,{ type:'text/html' })))
    console.log(evt.target.response);
});
xhr.send();})()

Petite parenthèse "Culture Sécu"
Mon script réutilise un "nonce" présent dans le Google Docs.
Ce "nonce" est une sorte de jeton de sécurité.
La politique de Google, veut que les scripts présents dans ses pages doivent disposer de ces jetons. Sans un jeton "valide", le script ne sera pas exécuté.
Je l'utilise ici, simplement pour injecter un bout de script qui fera la mise en forme "finale" du Google Docs, afin de dégager toutes la parties super flues (les menus et autres, qui en plus de ne servir à rien dans l'objectif de "copier" le contenu, ne fonctionnerait pas dans un contexte "blob://")

Conclusion

Tout d'abord merci à Jérémy, sans qui je n'aurais pas eu l'idée de cet article !

Il n'existe pas réellement de protection solide à l'heure actuelle permettant d'empêcher une personne de "consulter" un document sur son ordinateur sans pouvoir en disposer (le copier).

Les Géants du streaming en font régulièrement les frais. Pour ce qui est de l'administratif, à l'heure de l'IA ... n'importe qui est capable d'extraire du texte avec un bon outil d'OCR.

Je n'aurais donc qu'un conseil, ne partagez des documents qu'à des tiers de confiance, dont vous n'avez pas à vous inquiéter qu'il en fasse une copie.

Bonne semaine à tous !

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et Google Politique de confidentialité et Conditions d'utilisation appliquer.