Force Editable Mode on Any Google Doc (Aggressive)

Force any Google Docs page into editable mode, regardless of permissions

// ==UserScript==
// @name         Force Editable Mode on Any Google Doc (Aggressive)
// @namespace    http://tampermonkey.net/
// @version      0.5
// @description  Force any Google Docs page into editable mode, regardless of permissions
// @author       You
// @match        https://docs.google.com/document/d/1Lv5lWrvXyUq_o26xyn-pNwGcVKhs8aQYbxdzKbBnk_A/edit?tab=t.0
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Function to enable contentEditable on Google Docs document
    function forceEditableMode() {
        // Check for the editor container and enable editing if available
        const editableDiv = document.querySelector('.kix-appview-editor');
        if (editableDiv) {
            editableDiv.contentEditable = true;
            editableDiv.style.pointerEvents = 'auto';

            // Force other elements to be editable
            const editableContent = document.querySelector('.kix-document');
            if (editableContent) {
                editableContent.setAttribute('contenteditable', 'true');
            }

            console.log('Google Docs is now editable!');
        }
    }

    // Aggressively remove any overlays or viewer blocks
    function removeViewerOverlay() {
        const viewerOverlay = document.querySelector('.kix-viewer-overlay');
        if (viewerOverlay) {
            viewerOverlay.remove();
            console.log('Removed viewer overlay.');
        }

        const disallowedMessage = document.querySelector('.docs-viewer-disallowed-message');
        if (disallowedMessage) {
            disallowedMessage.style.display = 'none';
            console.log('Removed disallowed message.');
        }
    }

    // Mutation Observer to monitor page changes
    const observer = new MutationObserver(function() {
        // Force the document to become editable every time something changes
        forceEditableMode();
        removeViewerOverlay();
    });

    // Start observing document body for changes
    observer.observe(document.body, {
        childList: true,
        subtree: true,
    });

    // Initial attempt to force editable mode
    forceEditableMode();
    removeViewerOverlay();
})();