Google Docs User Account Redirect

Redirect Google Docs to correct user Account

// ==UserScript==
// @name         Google Docs User Account Redirect
// @description  Redirect Google Docs to correct user Account
// @version      0.4
// @author       Torkelicous
// @icon         https://ssl.gstatic.com/docs/documents/images/kix-favicon7.ico
// @include      https://docs.google.com/*
// @run-at       document-start
// @grant        GM_setValue
// @grant        GM_getValue
// @license      MIT
// @namespace https://greasyfork.org/users/1403155
// ==/UserScript==

(function() {

    let wantedAccount = GM_getValue('wantedAccount', 1)
    let isUIVisible = GM_getValue('isUIVisible', true);
    let guiContainer;
    let toggleButton;

    // Check if we should show UI (not on document/d URLs)
    var currentUrl = window.location.href;
    var shouldShowUI = !currentUrl.includes('/document/d/');

    // Create toggle
function createToggleButton() {
    toggleButton = document.createElement('button');
    toggleButton.textContent = isUIVisible ? '➖' : '➕';
    toggleButton.style.position = 'fixed';
    toggleButton.style.bottom = '10px';
    toggleButton.style.left = '70px';
    toggleButton.style.zIndex = '1000';
    toggleButton.style.padding = '5px';
    toggleButton.style.cursor = 'pointer';
    toggleButton.style.backgroundColor = 'grey';
    toggleButton.style.border = '1px solid grey';
    toggleButton.style.borderRadius = '3px';
    toggleButton.style.fontSize = '16px';

        toggleButton.onclick = function() {
            if (isUIVisible) {
                guiContainer.style.display = 'none';
                toggleButton.textContent = '➕';
            } else {
                guiContainer.style.display = 'block';
                toggleButton.textContent = '➖';
            }
            isUIVisible = !isUIVisible;
            GM_setValue('isUIVisible', isUIVisible);
        };

        document.body.appendChild(toggleButton);
    }

    // GUI for wantedAccount
    function createGUI() {
        // Don't create UI if we're on a document/d URL
        if (!shouldShowUI) {
            return;
        }

        guiContainer = document.createElement('div');
        guiContainer.style.position = 'fixed';
        guiContainer.style.bottom = '10px';
        guiContainer.style.left = '110px';
        guiContainer.style.padding = '10px';
        guiContainer.style.backgroundColor = 'DarkGrey';
        guiContainer.style.border = '1px solid grey';
        guiContainer.style.zIndex = '1000';
        guiContainer.style.display = isUIVisible ? 'block' : 'none'; // Set initial display based on saved state

        const label = document.createElement('label');
        label.textContent = 'Account: ';
        guiContainer.appendChild(label);

        const input = document.createElement('input');
        input.type = 'number';
        input.min = '0';
        input.max = '9';
        input.style.width = '30px';
        input.value = wantedAccount;
        guiContainer.appendChild(input);

        const button = document.createElement('button');
        button.textContent = 'Save';
        button.style.marginLeft = '5px';
        button.onclick = function() {
            GM_setValue('wantedAccount', input.value);
            location.reload();
        };
        guiContainer.appendChild(button);
        document.body.appendChild(guiContainer);
        createToggleButton();
    }
    window.addEventListener('load', createGUI);

    // Redirect logic for Google Docs
    // Skip redirect if URL contains /document/d/ pattern
    if (currentUrl.includes('/document/d/')) {
        return;
    }

    var urlPattern = /^https:\/\/docs\.google\.com\/document\/u\/(\d+)\//;
    var match = currentUrl.match(urlPattern);

    if (match) {
        var currentAccount = match[1];
        if (currentAccount != wantedAccount) {
            var newUrl = currentUrl.replace(/\/u\/\d+\//, `/u/${wantedAccount}/`);
            window.location.replace(newUrl);
        }
    } else {
        // only if it's not a /document/d/ URL
        if (currentUrl.includes('docs.google.com/document/') &&
            !currentUrl.includes('/u/') &&
            !currentUrl.includes('/document/d/')) {
            var newUrl = currentUrl.replace('docs.google.com/document/', `docs.google.com/document/u/${wantedAccount}/`);
            window.location.replace(newUrl);
        }
    }

})();