Google Sheets での YouTube 文字起こし (カスタム関数1つ)

YouTubeトランスクリプトをGoogle Sheetsに取得することは、1つのApps Script関数を要します。1回貼り付けて、=YT_TRANSCRIPT(A2)は組み込み関数のように機能します: 1つの列のURL、次の文字起こし。完全なスクリプト、およびSheets固有の2つの落とし穴があります。
スクリプト
スプレッドシートを開いて、拡張機能 > Apps Scriptに移動し、これを貼り付けてください:
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;
}
保存すると、関数はシート内でライブになります。@customfunctionタグはオートコンプリートに登録するもの; muteHttpExceptionsは404からスタックトレースを誰も求めなかった赤いセルに爆発するのを防ぎます。
キーの場合: ブラウザでhttps://youtube2text.org/api/demo-keyをリクエストし、{"success": true, "apiKey": "yt_..."}を返します―無料共有キー、アカウントなし、月5ビデオあたりIPに制限。これを試すのは良いですが、実際に使用するために自分のものを取得してください。
それを使用する
- 列AにビデオURL―完全なリンク、
youtu.be短いリンク、または裸の11文字IDをすべて機能させます。 - B2で、
=YT_TRANSCRIPT(A2)を入力します。 - もっとまたは少ないテキストが必要ですか?
=YT_TRANSCRIPT(A2, 20000)キャップを明示的に設定します。 - 数式を列の下にドラッグして、セルが埋まるのを見てください。
文字起こしはYouTubeの字幕から来ます―クリエイターがアップロードしたときは手動、そうでなければ自動生成、英語を優先し、存在する言語にフォールバック。
maxChars が他のどこよりも重要である理由
Google Sheetsセルは最大50,000文字を保持します。これはハードプラットフォーム制限であり、APIのデフォルトキャップ150,000文字はそれを航行します―長いポッドキャストエピソードはセルに到着するのに失敗します。Sheetsでは、常に50000以下のmaxCharsを渡します。スプレッドシートを小説に変えることなく、要約、キーワードチェック、AIフォーミュラにフィードするのをカバーしています。
再計算の落とし穴
カスタム関数アプローチの正直な制限: Sheets は再計算されるたびにカスタム関数を再実行します―ファイルが再度開かれるたびに含まれます。各再実行は実際のAPI呼び出しなので、40のトランスクリプト公式を持つシートはオープン時に静かに40ビデオを再取得し、クォータを朝食で消費します。修正は簡単です: トランスクリプトが到着したら、セルを選択して値として貼り付け直します(コピー、その後貼り付け特別>値のみ)。テキストは残り、数式、および食欲が消えます。
セルがERRORを言うとき
関数は衝突する代わりに読みやすいコードを返します。ERROR: TRANSCRIPT_UNAVAILABLEはビデオに字幕がまったくないことを意味します―取得するものはありません。ERROR: RATE_LIMIT_EXCEEDEDはキーの月間クォータが不足したことを意味し、共有デモキーで速く起こります。ERROR: INVALID_URLはセルがYouTubeビデオのように見えるものを含まないことを意味します。
それを取り続ける場所
文字起こしで満たされたシートは、驚くほど良い研究ツールです―コンテンツ研究投稿でそのワークフローを説明します。公式を成長させ、ビデオが公開されるときに文字起こしを自動的に取得したい場合、n8nワークフローはハンズフリーです。
独自のキーの場合―共有クォータなし、電話なし、カードなし―youtube2text.org/app/keysでGoogleサインインしてください。無料は月5ビデオをカバーし、$5.99は50を取得し、$9.99は500を取得し、$19.99は無制限です。API_KEYに貼り付けて、シートは残りをやります。