Google Docs Any Doc Editable Mode

Make any Google Docs view-only page editable

目前為 2025-02-17 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Google Docs Any Doc Editable Mode
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Make any Google Docs view-only page editable
// @author       You
// @match        https://docs.google.com/document/d/*/*
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Function to wait until the document content is loaded
    function waitForDocument() {
        // Look for overlay elements and remove them
        const viewerOverlay = document.querySelector('.kix-viewer-overlay');
        if (viewerOverlay) {
            removeViewerOverlay(viewerOverlay);
        }

        // Look for the document body (editable area)
        const editableDiv = document.querySelector('.kix-appview-editor');
        if (editableDiv) {
            enableEditing(editableDiv);
        } else {
            // Retry every second if the document is still loading
            setTimeout(waitForDocument, 1000);
        }
    }

    // Remove the viewer overlay that blocks interaction
    function removeViewerOverlay(viewerOverlay) {
        viewerOverlay.style.display = 'none';
        viewerOverlay.remove();
    }

    // Enable editing mode by making the document content editable
    function enableEditing(editableDiv) {
        editableDiv.contentEditable = true;  // Allow editing
        editableDiv.style.pointerEvents = 'auto';  // Allow interaction with the content

        // Remove any additional restrictions or overlays that prevent editing
        const disallowedMessage = document.querySelector('.docs-viewer-disallowed-message');
        if (disallowedMessage) {
            disallowedMessage.style.display = 'none';
        }

        // If Google uses any internal viewer restrictions, remove them
        const viewerContent = editableDiv.querySelector('.kix-document');
        if (viewerContent) {
            viewerContent.setAttribute('contenteditable', 'true');
        }

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

    // Start the process once the page is ready
    waitForDocument();

})();