سرویس یوتیوب

سرویس یوتیوب به شما امکان می‌دهد از API داده‌های یوتیوب و API پخش زنده یوتیوب در Apps Script استفاده کنید. این API به کاربران این امکان را می‌دهد که ویدیوها، لیست‌های پخش، کانال‌ها و رویدادهای زنده خود را مدیریت کنند.

مرجع

برای اطلاعات دقیق در مورد این سرویس، به مستندات مرجع زیر مراجعه کنید:

مانند تمام سرویس‌های پیشرفته در Apps Script، سرویس YouTube از همان اشیاء، متدها و پارامترهای API عمومی استفاده می‌کند. برای اطلاعات بیشتر، به بخش «نحوه تعیین امضاهای متد» مراجعه کنید.

برای گزارش مشکلات و یافتن پشتیبانی‌های دیگر، به صفحات پشتیبانی مربوطه مراجعه کنید:

کد نمونه

کد نمونه زیر از نسخه ۳ رابط برنامه‌نویسی کاربردی داده یوتیوب (YouTube Data API) استفاده می‌کند.

جستجو بر اساس کلمه کلیدی

این تابع ویدیوهایی درباره سگ‌ها را جستجو می‌کند، سپس شناسه‌ها و عنوان ویدیو را ثبت می‌کند. توجه داشته باشید که این نمونه نتایج را به ۲۵ محدود می‌کند. برای بازگرداندن نتایج بیشتر، پارامترهای اضافی را همانطور که در مستندات مرجع YouTube Data API نشان داده شده است، ارسال کنید.

پیشرفته/youtube.gs
/**
 * Searches for videos about dogs, then logs the video IDs and title.
 * Note that this sample limits the results to 25. To return more
 * results, pass additional parameters as shown in the YouTube Data API docs.
 * @see https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByKeyword() {
  try {
    const results = YouTube.Search.list("id,snippet", {
      q: "dogs",
      maxResults: 25,
    });
    if (results === null) {
      console.log("Unable to search videos");
      return;
    }
    for (const item of results.items) {
      console.log("[%s] Title: %s", item.id.videoId, item.snippet.title);
    }
  } catch (err) {
    // TODO (developer) - Handle exceptions from Youtube API
    console.log("Failed with an error %s", err.message);
  }
}

بازیابی آپلودها

این تابع ویدیوهای آپلود شده توسط کاربر را بازیابی می‌کند. این کار را با استفاده از مراحل زیر انجام می‌دهد:

  1. کانال کاربر را دریافت می‌کند
  2. لیست پخش uploads کاربر را دریافت می‌کند
  3. در این لیست پخش تکرار می‌شود و شناسه‌ها و عناوین ویدیو را ثبت می‌کند
  4. اگر صفحه بعدی از نتایج وجود داشته باشد، آن را دریافت می‌کند، سپس به مرحله ۳ برمی‌گردد
پیشرفته/youtube.gs
/**
 * This function retrieves the user's uploaded videos by:
 * 1. Fetching the user's channel's.
 * 2. Fetching the user's "uploads" playlist.
 * 3. Iterating through this playlist and logs the video IDs and titles.
 * 4. If there is a next page of resuts, fetching it and returns to step 3.
 */
function retrieveMyUploads() {
  try {
    // @see https://developers.google.com/youtube/v3/docs/channels/list
    const results = YouTube.Channels.list("contentDetails", {
      mine: true,
    });
    if (!results || results.items.length === 0) {
      console.log("No Channels found.");
      return;
    }
    for (let i = 0; i < results.items.length; i++) {
      const item = results.items[i];
      /** Get the channel ID - it's nested in contentDetails, as described in the
       * Channel resource: https://developers.google.com/youtube/v3/docs/channels.
       */
      const playlistId = item.contentDetails.relatedPlaylists.uploads;
      let nextPageToken = null;
      do {
        // @see: https://developers.google.com/youtube/v3/docs/playlistItems/list
        const playlistResponse = YouTube.PlaylistItems.list("snippet", {
          playlistId: playlistId,
          maxResults: 25,
          pageToken: nextPageToken,
        });
        if (!playlistResponse || playlistResponse.items.length === 0) {
          console.log("No Playlist found.");
          break;
        }
        for (let j = 0; j < playlistResponse.items.length; j++) {
          const playlistItem = playlistResponse.items[j];
          console.log(
            "[%s] Title: %s",
            playlistItem.snippet.resourceId.videoId,
            playlistItem.snippet.title,
          );
        }
        nextPageToken = playlistResponse.nextPageToken;
      } while (nextPageToken);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log("Failed with err %s", err.message);
  }
}

عضویت در کانال

این نمونه، کاربر را در کانال توسعه‌دهندگان گوگل در یوتیوب مشترک می‌کند.

پیشرفته/youtube.gs
/**
 * This sample subscribes the user to the Google Developers channel on YouTube.
 * @see https://developers.google.com/youtube/v3/docs/subscriptions/insert
 */
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  const channelId = "UC_x5XG1OV2P6uZZ5FSM9Ttw";
  const resource = {
    snippet: {
      resourceId: {
        kind: "youtube#channel",
        channelId: channelId,
      },
    },
  };

  try {
    const response = YouTube.Subscriptions.insert(resource, "snippet");
    console.log(
      "Added subscription for channel title : %s",
      response.snippet.title,
    );
  } catch (e) {
    if (e.message.match("subscriptionDuplicate")) {
      console.log(
        `Cannot subscribe; already subscribed to channel: ${channelId}`,
      );
    } else {
      // TODO (developer) - Handle exception
      console.log(`Error adding subscription: ${e.message}`);
    }
  }
}