Skip to content

Instantly share code, notes, and snippets.

@fltd
Last active October 10, 2025 07:47
Show Gist options
  • Select an option

  • Save fltd/9d78bec180fb4649784070689a0a6a14 to your computer and use it in GitHub Desktop.

Select an option

Save fltd/9d78bec180fb4649784070689a0a6a14 to your computer and use it in GitHub Desktop.
accio-google-meet.user.js

Accio Google Meet

version

A userscript to automate the small, repetitive tasks in Google Calendar and Google Meet. This script was created to bring back the convenience of automatically adding meeting links and to ensure you never forget to start taking notes again.

The Problem

In many Google Workspace environments, the "Automatically add video conferences" setting is disabled to avoid confusion. This is a great policy, but it means you have to remember to click "Add Google Meet video conferencing" every single time you create an event.

Similarly, with the excellent "Take notes" feature powered by Gemini in Google Meet, it's easy to forget to enable it right at the start of a call; or when you set up the meeting.

This script solves both problems.

Features

  • Accio Google Meet: Automatically finds and clicks the "Add Google Meet video conferencing" button when you create or duplicate an event in Google Calendar.
  • Accio Gemini Notes: Automatically finds and clicks the "Take notes" button when you join a Google Meet call.
  • Control Panel: A simple magic wand icon on Google Calendar opens a settings menu to give you full control.
  • Host-Only Mode: Configure the script to only activate "Accio Gemini Notes" when you are the meeting host.

Installation

To use this script, you first need a userscript manager for your browser.

  1. Install a Userscript Manager The most popular one is Tampermonkey.

  2. Install the Accio Google Meet Userscript Once Tampermonkey is installed, click the link below to install the script. A new tab will open in Tampermonkey. Just click the "Install" button.

    ➡️ Install Accio Google Meet Userscript

That's it! The script is now active.

Usage & Configuration

The script's settings can be managed directly from the Google Calendar page.

  1. Go to Google Calendar.
  2. Look for the popcat icon 😺 in the bottom-right corner of the screen.
  3. Click the icon to open the Accio Settings panel.

You will see a cat icon on the bottom-right corner of your Google Calendar.

Click the cat icon to open the Accio Settings panel.

From this panel, you can:

  • Accio Google Meet: Toggle the automatic adding of Meet links in Calendar.
  • Accio Gemini Notes: Toggle the automatic start of note-taking in Meet.
  • Only Take Notes When Host: If "Accio Gemini Notes" is active, this checkbox will appear. When checked, notes will only be auto-started in meetings where you have host controls.

Your preferences are saved automatically.

// ==UserScript==
// @name Accio Google Meet
// @version 0.1.0
// @author Floyd
// @description Automate adding Meet links and starting notes in Meet (with a host-only option), with a control panel on Google Calendar.
// @match https://calendar.google.com/calendar/*
// @match https://meet.google.com/*
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addStyle
// @run-at document-idle
// ==/UserScript==
(function () {
"use strict";
// --- SHARED CONFIGURATION ---
const ICON_URL_DEFAULT =
"data:image/png;base64,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";
const ICON_URL_ACTIVE =
"data:image/png;base64,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";
const MEET_CLICK_DEBOUNCE_MS = 750; // Time to wait after finding a button to ensure it's the final one.
let settings = {
enableAccioGoogleMeet: true,
enableAccioGeminiNotes: true,
takeNotesOnlyWhenHost: false,
};
// --- GOOGLE MEET SELECTORS ---
const meetPencilButtonSelectors = [
'button[aria-label="Gemini isn\'t taking notes"]',
'button[aria-label="Gemini がメモを作成していません"]',
];
const meetStartTakingNotesButtonSelectors = [
'button[data-progress-announcement="Gemini\'s getting ready to take notes"]',
'button[data-progress-announcement="Gemini がメモの作成の準備をしています"]',
];
const hostControlButtonSelectors = [
'button[aria-label="Host controls"]',
'button[aria-label="主催者用ボタン"]',
];
// --- GOOGLE CALENDAR TEXT ---
const calendarAddGoogleMeetVideoConferencingButtonTexts = [
"Add Google Meet video conferencing",
"Google Meet のビデオ会議を追加",
];
// =================================================================================
// SHARED UI & STATE MANAGEMENT
// =================================================================================
function setupStyles() {
GM_addStyle(`
#accio-control-icon {
position: fixed; bottom: 50px; right: 5px; width: 46px; height: 46px;
border-radius: 50%; cursor: pointer; z-index: 9999;
transition: transform 0.2s ease, opacity 0.3s ease;
display: flex; align-items: center; justify-content: center;
}
#accio-control-icon.disabled { opacity: 0.4; }
#accio-control-icon img { width: 80%; height: 80%; }
#accio-menu {
position: fixed; bottom: 85px; right: 20px; width: 280px;
background: #3c4043; color: #e8eaed; border-radius: 12px;
box-shadow: 0 5px 15px rgba(0,0,0,0.4); z-index: 9998;
padding: 16px; font-family: 'Google Sans', Roboto, Arial, sans-serif;
visibility: hidden; opacity: 0; transform: translateY(10px);
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
#accio-menu.visible { visibility: visible; opacity: 1; transform: translateY(0); }
#accio-menu h3 { margin: 0 0 8px 0; font-size: 16px; font-weight: 500; text-align: center; color: #fff; }
.accio-menu-row { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; transition: opacity 0.3s ease; }
.accio-menu-row span { max-width: 190px; }
.accio-menu-row.disabled-row {
opacity: 0.5;
pointer-events: none;
}
.accio-switch { position: relative; display: inline-block; width: 50px; height: 28px; flex-shrink: 0; }
.accio-switch input { opacity: 0; width: 0; height: 0; }
.accio-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #5f6368; transition: .3s; border-radius: 28px; }
.accio-slider:before { position: absolute; content: ""; height: 20px; width: 20px; left: 4px; bottom: 4px; background-color: white; transition: .3s; border-radius: 50%; }
input:checked + .accio-slider { background-color: #b68dfc; }
input:checked + .accio-slider:before { transform: translateX(22px); }
`);
}
function createUI() {
const controlIcon = document.createElement("div");
controlIcon.id = "accio-control-icon";
const iconImage = document.createElement("img");
iconImage.id = "accio-icon-image";
iconImage.src = ICON_URL_DEFAULT;
iconImage.alt = "Accio Settings";
controlIcon.appendChild(iconImage);
const menu = document.createElement("div");
menu.id = "accio-menu";
const menuHeader = document.createElement("h3");
menuHeader.textContent = "🪄 Accio Settings";
menu.appendChild(menuHeader);
const createMenuRow = (id, labelText) => {
const row = document.createElement("div");
row.className = "accio-menu-row";
row.id = id + "-row";
const label = document.createElement("span");
label.textContent = labelText;
row.appendChild(label);
const switchContainer = document.createElement("label");
switchContainer.className = "accio-switch";
const checkbox = document.createElement("input");
checkbox.type = "checkbox";
checkbox.id = id;
switchContainer.appendChild(checkbox);
const slider = document.createElement("span");
slider.className = "accio-slider";
switchContainer.appendChild(slider);
row.appendChild(switchContainer);
return row;
};
const calendarRow = createMenuRow(
"accio-toggle-google-meet",
"Accio Google Meet"
);
const meetRow = createMenuRow(
"accio-toggle-gemini-notes",
"Accio Gemini Notes"
);
const hostRow = createMenuRow(
"accio-toggle-host",
"Only Take Notes When Host"
);
menu.appendChild(calendarRow);
menu.appendChild(meetRow);
menu.appendChild(hostRow);
document.body.appendChild(controlIcon);
document.body.appendChild(menu);
const accioGoogleMeetToggle = document.getElementById(
"accio-toggle-google-meet"
);
const accioGeminiNotesToggle = document.getElementById(
"accio-toggle-gemini-notes"
);
const hostToggle = document.getElementById("accio-toggle-host");
controlIcon.addEventListener("mouseover", () => {
iconImage.src = ICON_URL_ACTIVE;
});
controlIcon.addEventListener("mouseout", () => {
if (!menu.classList.contains("visible")) {
iconImage.src = ICON_URL_DEFAULT;
}
});
controlIcon.addEventListener("click", (e) => {
e.stopPropagation();
menu.classList.toggle("visible");
if (menu.classList.contains("visible")) {
iconImage.src = ICON_URL_ACTIVE;
} else {
iconImage.src = ICON_URL_DEFAULT;
}
});
document.addEventListener("click", () => {
if (menu.classList.contains("visible")) {
menu.classList.remove("visible");
iconImage.src = ICON_URL_DEFAULT;
}
});
menu.addEventListener("click", (e) => e.stopPropagation());
accioGoogleMeetToggle.addEventListener("change", () => {
settings.enableAccioGoogleMeet = accioGoogleMeetToggle.checked;
updateAndSaveSettings();
});
accioGeminiNotesToggle.addEventListener("change", () => {
settings.enableAccioGeminiNotes = accioGeminiNotesToggle.checked;
if (!settings.enableAccioGeminiNotes) {
settings.takeNotesOnlyWhenHost = false;
}
updateAndSaveSettings();
});
hostToggle.addEventListener("change", () => {
settings.takeNotesOnlyWhenHost = hostToggle.checked;
updateAndSaveSettings();
});
}
async function updateAndSaveSettings() {
await GM_setValue("accioSettings", settings);
console.log("Accio: Settings updated.", settings);
const controlIcon = document.getElementById("accio-control-icon");
if (controlIcon) {
const hostRow = document.getElementById("accio-toggle-host-row");
document.getElementById("accio-toggle-google-meet").checked =
settings.enableAccioGoogleMeet;
document.getElementById("accio-toggle-gemini-notes").checked =
settings.enableAccioGeminiNotes;
document.getElementById("accio-toggle-host").checked =
settings.takeNotesOnlyWhenHost;
if (settings.enableAccioGeminiNotes) {
hostRow.classList.remove("disabled-row");
} else {
hostRow.classList.add("disabled-row");
}
controlIcon.classList.toggle(
"disabled",
!settings.enableAccioGoogleMeet && !settings.enableAccioGeminiNotes
);
}
}
async function loadInitialState() {
const defaultSettings = {
enableAccioGoogleMeet: true,
enableAccioGeminiNotes: true,
takeNotesOnlyWhenHost: false,
};
const savedSettings = await GM_getValue("accioSettings", defaultSettings);
settings = { ...defaultSettings, ...savedSettings };
updateAndSaveSettings();
}
function findElementBySelectors(selectors) {
for (const selector of selectors) {
const element = document.querySelector(selector);
if (element) return element;
}
return null;
}
// =================================================================================
// DOMAIN-SPECIFIC LOGIC
// =================================================================================
function runCalendarObserver() {
console.log("Accio: Initializing on Google Calendar...");
const observer = new MutationObserver((mutations) => {
if (!settings.enableAccioGoogleMeet) return;
for (const mutation of mutations) {
for (const node of mutation.addedNodes) {
if (!(node instanceof HTMLElement)) continue;
const spans = node.querySelectorAll("span");
for (const span of spans) {
if (
calendarAddGoogleMeetVideoConferencingButtonTexts.some((text) =>
span.innerText.includes(text)
)
) {
const addGoogleMeetVideoConferencingButton =
span.closest("button");
if (addGoogleMeetVideoConferencingButton) {
console.log(
"Accio: Found and clicked 'Add Google Meet video conferencing' button."
);
addGoogleMeetVideoConferencingButton.click();
return;
}
}
}
}
}
});
observer.observe(document.body, { subtree: true, childList: true });
}
function runMeetObserver() {
console.log("Accio: Initializing on Google Meet (silent mode)...");
let clickTimerId = null; // Holds the timer for the debounced click
const observer = new MutationObserver((mutations, obs) => {
if (!settings.enableAccioGeminiNotes) {
obs.disconnect();
return;
}
// --- NEW RESILIENT LOGIC ---
// Check for the final button first. This is our highest priority.
const startTakingNotesButton = findElementBySelectors(
meetStartTakingNotesButtonSelectors
);
if (startTakingNotesButton) {
// If host is required, perform the check NOW, right before we act.
if (settings.takeNotesOnlyWhenHost) {
const hostControlsButton = findElementBySelectors(
hostControlButtonSelectors
);
if (!hostControlsButton) {
// Button is visible, but host controls aren't yet. Be patient and wait for the next mutation.
return;
}
}
// Conditions met. Debounce the click.
clearTimeout(clickTimerId);
clickTimerId = setTimeout(() => {
console.log(
`Accio: Debounce timer finished. Clicking the 'Start notes' button.`
);
startTakingNotesButton.click();
obs.disconnect(); // This is the only place the observer stops.
}, MEET_CLICK_DEBOUNCE_MS);
return;
}
// If the final button isn't found, check for the pencil button.
const pencilButton = findElementBySelectors(meetPencilButtonSelectors);
if (pencilButton) {
if (clickTimerId) return; // A click is already scheduled, do nothing.
// If host is required, perform the check NOW, before clicking the pencil.
if (settings.takeNotesOnlyWhenHost) {
const hostControlsButton = findElementBySelectors(
hostControlButtonSelectors
);
if (!hostControlsButton) {
// Pencil is visible, but host controls aren't yet. Wait for the next mutation.
return;
}
}
// Conditions met. Click the pencil button to reveal the menu.
console.log("Accio: Pencil button found. Clicking to reveal menu.");
pencilButton.click();
}
});
observer.observe(document.body, { childList: true, subtree: true });
}
// =================================================================================
// INITIALIZATION ROUTER
// =================================================================================
async function initialize() {
await loadInitialState();
const hostname = window.location.hostname;
if (hostname === "calendar.google.com") {
setupStyles();
createUI();
updateAndSaveSettings();
runCalendarObserver();
} else if (hostname === "meet.google.com") {
runMeetObserver();
}
}
initialize();
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment