YouTube Transkription i Google Sheets Med En anpassad funktion

Att få en YouTube-transkription i Google Sheets tar en Apps Script-funktion. Klistra in den en gång, och =YT_TRANSCRIPT(A2) fungerar som valfri inbyggd formel: URL i en kolumn, transkription i nästa. Här är det fullständiga skriptet, plus två Sheets-specifika fallgropar som kommer att bita dig om ingen varnar dig.
Skriptet
Öppna ditt kalkylblad, gå till Extensions > Apps Script och klistra in detta:
const API_KEY = 'yt_YOUR_KEY';
/**
* Fetches the transcript of a YouTube video.
* @param {string} url Any YouTube URL or a bare 11-char video id.
* @param {number} maxChars Optional length cap (default 5000).
* @return {string} The transcript text.
* @customfunction
*/
function YT_TRANSCRIPT(url, maxChars) {
if (!url) return '';
const endpoint = 'https://youtube2text.org/api/transcribe'
+ '?url=' + encodeURIComponent(url)
+ '&maxChars=' + (maxChars || 5000);
const response = UrlFetchApp.fetch(endpoint, {
headers: { 'x-api-key': API_KEY },
muteHttpExceptions: true
});
const body = JSON.parse(response.getContentText());
if (body.error) return 'ERROR: ' + body.error.code;
return body.result.content;
}
Spara, och funktionen är live i ditt blad. Taggen @customfunction är vad som registrerar det med autofyllning; muteHttpExceptions håller en 404 från att explodera in i en röd cell med en stacktrace ingen frågade om.
För nyckeln: begär https://youtube2text.org/api/demo-key i din webbläsare och den ger tillbaka {"success": true, "apiKey": "yt_..."} — en gratis delad nyckel, inget konto, begränsad till 5 videor per månad per IP. Bra för att prova detta; få din egen för riktigt bruk.
Använda det
- Lägg video-URL:er i kolumn A — fullständiga länkar,
youtu.bekorta länkar eller nackna 11-tecken-id:n fungerar alla. - I B2 skriver du
=YT_TRANSCRIPT(A2). - Behöver du mer eller mindre text?
=YT_TRANSCRIPT(A2, 20000)sätter gränsen explicit. - Dra formeln nedåt i kolumnen och se cellerna fyllas.
Transkriptioner kommer från Youtubes egna bildtexter — manuella när skaparen laddade upp dem, automatiskt genererade annars, engelska föredraget med återgång till vilket språk som helst existerar.
Varför maxChars är viktigare här än någonstans annars
En Google Sheets-cell rymmer högst 50 000 tecken. Det är en hårdplattformsgräns, och API:ts standardtak på 150 000 tecken seglar direkt förbi det — en långt podcastavsnitt skulle misslyckas att landar i cellen. Så i Sheets, passa alltid på maxChars på 50000 eller mindre. Jag ställer in skriptet som standard på 5000, vilket täcker sammanfattningar, nyckelordskontroller och mata en AI-formel, utan att förvandla ditt kalkylblad till en roman.
Omberäkningsfallet
Här är den ärliga begränsningen av anpassade funktionen: Sheets kör anpassade funktioner när det omräknar — inklusive varje gång filen öppnas på nytt. Varje omkörning är ett verkligt API-anrop, så ett blad med 40 transkriptformler hämtar tysta 40 videor på öppen och äter din kvot till frukost. Fixet är enkelt: när en transkription kommer, välj cellerna och klistra in dem tillbaka som värden (Kopiera, sedan Klistra in special > Endast värden). Texten stannar; formeln, och dess aptit, går.
När en cell säger ERROR
Funktionen returnerar läsbara koder i stället för att krascha. ERROR: TRANSCRIPT_UNAVAILABLE betyder att videon inte har någon bildtextsspår alls — ingenting att hämta. ERROR: RATE_LIMIT_EXCEEDED betyder att nyckelns månatliga kvota tog slut, vilket på den delade demo-nyckeln händer snabbt. ERROR: INVALID_URL betyder att cellen inte innehåller något som liknar en YouTube-video.
Vart du tar det
Ett blad fullt av transkriptioner är ett överraskande bra forskningsverktyg — jag går genom det arbetsflödet i innehållsforskningen. Och när du växer ur formler och vill transkriptioner hämtade automatiskt när videor publiceras, gör n8n-arbetsflödet det hands-free.
För din egen nyckel — ingen delad kvota, ingen telefon, inget kort — logga in med Google på youtube2text.org/app/keys. Gratis täcker 5 videor per månad; $5,99 får 50, $9,99 får 500, $19,99 är unlimited. Klistra in den i API_KEY och bladet gör resten.