Copy and paste across Google Slides
I wanted to copy slides from one Google Slide document to another. Half-expecting it to not work, I just copied slides in one document, switched to a different tab, hit paste… and it worked! Seamless and perfect.
It looks like when you copy slides, your clipboard actually saves a special payload that contains information about the slides you are copying, rather than the raw content. Then when you paste that into a Slides document, it retrieves the slide data from its servers and imports them to the second document. I imagine you have to be logged into the same Google account in both tabs for it to work properly.
You can actually look at the raw clipboard data by using a custom HTML page like below:
<!DOCTYPE html>
<html>
<head><title>Clipboard Viewer</title></head>
<body>
<h1>Paste clipboard contents here (Ctrl+V)</h1>
<pre id="output"></pre>
<script>
document.body.addEventListener('paste', async (event) => {
const output = document.getElementById('output');
output.textContent = '';
const clipboardItems = event.clipboardData.items;
for (let i = 0; i < clipboardItems.length; i++) {
const item = clipboardItems[i];
const type = item.type;
output.textContent += `MIME Type: ${type}\n`;
if (item.kind === 'string') {
item.getAsString((str) => {
output.textContent += `Content:\n${str}\n\n`;
});
} else if (item.kind === 'file') {
const file = item.getAsFile();
const text = await file.text();
output.textContent += `File Content:\n${text}\n\n`;
}
}
});
</script>
</body>
</html>
After copying slide data and pasting it to this page, I saw:
MIME Type: text/html
MIME Type: text/plain
Content:
<head><meta charset="UTF-8"></head><b id="docs-internal-guid-2b163f80-7fff-e9cd-4022-54d9d4edcc57" style="font-style: normal; font-variant-caps: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); font-weight: normal;"><span> </span></b>
Content:
That docs-internal-guid-* looks like the important bit. Copying multiple slides also results in a single guid, so I guess this is just a catch-all hash that saves all information about whatever it is that you had copied. Pretty cool.