سرویس یوتیوب

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

مرجع

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

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

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

کد نمونه

کد نمونه زیر از نسخه 3 YouTube Data API استفاده می کند.

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

این تابع ویدیوهای مربوط به سگ ها را جستجو می کند، سپس شناسه ها و عنوان ویدیو را ثبت می کند. توجه داشته باشید که این نمونه نتایج را به 25 محدود می کند. برای برگرداندن نتایج بیشتر، پارامترهای اضافی را همانطور که در مستندات مرجع 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;
    }
    results.items.forEach((item)=> {
      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. اگر صفحه بعدی از نتایج وجود دارد، آن را واکشی می کند، سپس به مرحله 3 باز می گردد
پیشرفته/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);
  }
}

عضو کانال شوید

این نمونه کاربر را در کانال Google Developers در YouTube مشترک می کند.

پیشرفته/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);
    }
  }
}