Transkrypcja YouTube w Google Sheets Jedną Funkcją Niestandardową

Uzyskanie transkrypcji YouTube do Google Sheets zajmuje jedną funkcję Apps Script. Wklej raz, a =YT_TRANSCRIPT(A2) działa jak jakakolwiek wbudowana formuła: URL w jednej kolumnie, transkrypcja w następnej. Oto kompletny skrypt, plus dwa specyficzne dla Sheets- gotchas, które Cię gryzną, jeśli nikt Ci nie ostrzega.
Skrypt
Otwórz swój arkusz, przejdź do Extensions > Apps Script i wklej to:
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;
}
Zapisz, a funkcja jest aktywna w Twoim arkuszu. Tag @customfunction to co go rejestruje z autouzupełnianiem; muteHttpExceptions utrzymuje 404 od eksplozji do czerwonej komórki ze śladem stosu, którego nikt nie prosił.
Dla klucza: poproś https://youtube2text.org/api/demo-key w przeglądarce i zwraca {"success": true, "apiKey": "yt_..."} — bezpłatny wspólny klucz, brak konta, ograniczony do 5 filmów na miesiąc na IP. Fajnie do próbowania tego; uzyskaj własny do rzeczywistego użytku.
Używanie go
- Umieść adresy URL wideo w kolumnie A — pełne linki,
youtu.bekrótkie linki, lub gołe 11-znakowe id wszystkie działają. - W B2 wpisz
=YT_TRANSCRIPT(A2). - Potrzebujesz więcej czy mniej tekstu?
=YT_TRANSCRIPT(A2, 20000)ustawia granicę jawnie. - Przeciągnij formułę w dół kolumny i obserwuj komórki się zapełniają.
Transkrypcje pochodzą z własnych napisów YouTube — ręczny, gdy twórca je przesłał, autogenerowany w innym razie, angielski preferowany z rezerwą na niezależnie jaki język istnieje.
Dlaczego maxChars tu ma większe znaczenie niż gdziekolwiek indziej
Komórka Google Sheets przechowuje maksymalnie 50 000 znaków. To twarda granica platformy, a domyślna granica API 150 000 znaków płynie tuż poza nią — długi odcinek podcastu nie umiałby wylądować w komórce. Tak więc w Sheets zawsze przekazuj maxChars 50000 lub mniej. Ustawiłem skrypt domyślnie na 5000, co obejmuje podsumowania, kontrole słów kluczowych i karmienie formuły AI, bez zamiany arkusza kalkulacyjnego w powieść.
Gotcha ponownego obliczenia
Oto szczera ograniczenie podejścia funkcji niestandardowej: Sheets ponownie uruchamia funkcje niestandardowe, gdy przelicza — włącznie z każdym razem, gdy plik jest otwierany. Każde ponowne uruchomienie to rzeczywiste wywołanie API, więc arkusz z 40 formułami transkrypcji cicho ponownie pobiera 40 filmów przy otwieraniu i zjada Twój kwot na śniadanie. Naprawa jest prosta: gdy transkrypcja się pojawi, zaznacz komórki i wklej je z powrotem jako wartości (Kopiuj, a następnie Wklej specjalne > Tylko wartości). Tekst pozostaje; formuła i jej apetyt idą.
Gdy komórka mówi ERROR
Funkcja zwraca czytelne kody zamiast kruszenia. ERROR: TRANSCRIPT_UNAVAILABLE oznacza, że film w ogóle nie ma napisów — nic do pobrania. ERROR: RATE_LIMIT_EXCEEDED oznacza, że przydział miesięczny klucza wyczerpany, co na wspólnym kluczu demo dzieje się szybko. ERROR: INVALID_URL oznacza, że komórka nie zawiera nic przypominającego wideo YouTube.
Gdzie je zabrać
Arkusz pełny transkrypcji jest zaskakująco dobrym narzędziem badawczym — przechodzę przez ten przepływ pracy w poście badań zawartości. A gdy wyrosną z formuł i chcesz transkrypcje pobierane automatycznie, gdy filmy publikują, przepływ pracy n8n to robi bez użytkownika.
Dla Twojego własnego klucza — brak wspólnego kwotu, brak telefonu, brak karty — zaloguj się za pomocą Google na youtube2text.org/app/keys. Bezpłatnie obejmuje 5 filmów na miesiąc; 5,99 USD uzyskuje 50, 9,99 USD uzyskuje 500, 19,99 USD to nieograniczone. Wklej go do API_KEY i arkusz robi resztę.