YouTube概要欄のURLを無料で一括置換する方法

🎥 YouTube概要欄のURLを無料で一括置換する方法

YouTube Studioでは、複数動画の概要欄内の一部テキスト(URLなど)を部分的に置換する機能がありません。そこで今回は、Google Apps Script(GAS)とYouTube Data API v3を使って、無料で安全に「概要欄内URLを一括変更」する方法を図解で紹介します。


✅ この方法の特徴

  • 完全無料(Google純正機能のみ)
  • 概要欄(description)のみを自動置換
  • タイトル・タグ・公開設定は変更されません
  • 200本以上の動画にも対応(自動ループ処理)

🔍 手順1:Google Apps Scriptを開く

  1. https://script.google.com/ にアクセスします。
  2. 「新しいプロジェクト」をクリック。
  3. コードエディタが開いたら、次のスクリプトを貼り付けます。
    URLの部分は、ご自身で変更してくださいね👍️
function replaceURLInDescriptions() {
  const oldURL = "https://oldsite.com"; // ←旧URLを入力
  const newURL = "https://newsite.com"; // ←新URLを入力
  let nextPageToken = "";

  do {
    const searchResponse = YouTube.Search.list('id', {
      forMine: true,
      type: 'video',
      maxResults: 50,
      pageToken: nextPageToken
    });

    const videoIds = searchResponse.items.map(item => item.id.videoId).filter(Boolean);
    if (videoIds.length === 0) break;

    const response = YouTube.Videos.list('id,snippet', { id: videoIds.join(',') });

    const videos = response.items;
    for (const video of videos) {
      const desc = video.snippet.description || "";
      if (desc.includes(oldURL)) {
        const updatedDesc = desc.replaceAll(oldURL, newURL);
        video.snippet.description = updatedDesc;

        YouTube.Videos.update(
          { id: video.id, snippet: video.snippet },
          'snippet'
        );
        Logger.log(`✅ Updated: ${video.id}`);
      }
    }

    nextPageToken = searchResponse.nextPageToken;
  } while (nextPageToken);
}

🔧 手順2:YouTube Data APIを追加

  1. エディタ上部のメニューから「サービス(+)」をクリック。
  2. 一覧から YouTube Data API v3 を選んで「追加」。

これでスクリプトが自分のチャンネル動画にアクセスできるようになります。


🚨 認証エラーが出た場合の対策

スクリプト実行時に、以下のようなエラーが出ることがあります:

GoogleJsonResponseException: API call to youtube.videos.list failed with error: No filter selected.
または
「このアプリはGoogleで確認されていません」

🧭 対策①:スクリプトの認証を正しく許可する

  1. 実行時に「権限を確認」ボタンが表示されたらクリック。
  2. Googleアカウントを選択。
  3. 「このアプリはGoogleで確認されていません」と出たら:
    「詳細」→「(プロジェクト名)に移動」→「許可」をクリック。
  4. これで認証が完了します。

🧠 対策②:YouTube Data API v3 のサービスが追加されているか確認

スクリプトエディタ上部のメニューから「サービス(+)」をクリックし、
YouTube Data API v3 が一覧に追加されていることを確認します。
表示されていなければ再度追加してください。

⚙️ 対策③:「No filter selected」エラーの場合

このエラーは、APIの呼び出しで「どの動画を取得するか指定されていない」ときに発生します。
スクリプトが以下のように修正版になっているか確認してください。

const searchResponse = YouTube.Search.list('id', {
  forMine: true,
  type: 'video',
  maxResults: 50,
  pageToken: nextPageToken
});

このように forMine: truetype: 'video' が入っていればOKです。

🔑 対策④:「アクセスが拒否されました」エラーの場合

これはGoogleのアカウントにYouTubeチャンネルが紐づいていない場合に起こります。

  • GoogleアカウントでYouTubeに一度ログインしておく。
  • チャンネルがまだない場合は「チャンネルを作成」をクリック。
  • その状態で再度スクリプトを実行。

🧩 対策⑤:認証のリセット(最終手段)

一度認証情報をリセットして再許可すると直る場合もあります。

  1. GAS画面上部の「実行」メニューから「全ての認証を削除」を選択。
  2. 再度「▶ 実行」を押して、新たに認証を許可。

🔑 手順3:スクリプトを実行して認証

  1. 上部の関数プルダウンから replaceURLInDescriptions を選択。
  2. ▶ 実行をクリック。
  3. Googleアカウントの選択画面が出たら、自分のチャンネルのアカウントを選択。
  4. 「このアプリはGoogleで確認されていません」と表示された場合:
    「詳細」→「(プロジェクト名)に移動」→「許可」をクリック。
  5. 実行後、メニュー「表示」→「ログ」で ✅ Updated: videoID が出れば成功!

🔊 注意点

  • 置換されるのは 概要欄(description) のみ。
  • 他の項目(タイトル・タグなど)は変更されません。
  • 処理対象は1回50件までですが、自動で次のページに進むので何百本でもOK。
  • 実行前に1〜2本でテストしてから本実行するのがおすすめです。

📊 応用テクニック

特定の文字列を含む動画だけ編集したい場合は以下のように条件を追加できます。

if (desc.includes("特定のキーワード")) {
  // ここに置換処理
}

また、文末に自動で追記したい場合は、次のように変更できます。

const updatedDesc = desc + "\n\n" + "追記したいテキスト";

🌟 まとめ

項目内容
方法Google Apps Script + YouTube Data API v3
費用無料
操作対象概要欄(description)のみ
難易度中級(コピペでOK)
対象本数数百本まで自動処理可能

✨ 最後に

この方法を使えば、有料ツールなしでYouTube概要欄のURLを安全かつ無料で一括置換できます。作業前に1本テストし、動作を確認してから本番実行すると安心です。