The following bookmarket shows a popup with the name of the participants separated by newlines.
javascript:-function(maxStrLength = 2000) { try { function findParticipants(current, depth = 0) { if (depth > 7) return; if (typeof current !== "object" || current === null || current === window) return; const descriptors = Object.getOwnPropertyDescriptors(current); for (const prop in descriptors) { if (prop.startsWith('["spaces/')) return Object.values(current); const item = findParticipants(descriptors[prop].value, depth + 1); if (item !== undefined) return item; } } const rootState = Object.entries(window).find(x => x[0].startsWith("closure_lm_"))[1], participants = findParticipants(rootState), names = []; function findName(obj) { for (const prop in obj) { const value = obj[prop]; if (typeof value === "object" && value !== null && typeof value[1] === "string") return value[1]; } } for (let i = 0; i < participants.length; i++) { const name = findName(participants[i]); if (names.indexOf(name) === -1) names.push(name); } if (names.length === 0) throw new Error("Could not find any name."); names.sort((a, b) => a.localeCompare(b)); const groups = names.slice(1).reduce((groups, name) => { if (groups[0].length + name.length + 1 >= maxStrLength) { groups.unshift(name); } else { groups[0] += "\n" + name; } return groups; }, [names[0]]).reverse(); for (let i = 0, {length} = groups; i < length; i++) { const suffix = length === 1 ? "" : " (" + (i + 1) + "/" + length + ")", message = "Please find the list of participants below" + suffix + "."; if (prompt(message, groups[i]) === null) break; } } catch (e) { alert("Unexpected error when running the script: " + e); }}()
This code can be generated by evaluating:
`javascript:${await fetch("https://gist.githubusercontent.com/dobesv/4b44c9ca6f04910a3d1da41267a16f87/raw/4169035c0777f74b633795622c93006e3352236e/google-meet-participants.js").then(x => x.text())}`.replace(/\n|\/\*[\s\S]+?\*\//g, '').replace(/ +/g, ' ')