YouTube-Dienst

Mit dem YouTube-Dienst kannst du die YouTube Data API und die YouTube Live Streaming API in Apps Script verwenden. Mit dieser API können Nutzer ihre Videos, Playlists, Kanäle und Live-Veranstaltungen verwalten.

Referenz

Weitere Informationen zu diesem Dienst finden Sie in der folgenden Referenzdokumentation:

Wie alle erweiterten Dienste in Apps Script verwendet auch der YouTube-Dienst dieselben Objekte, Methoden und Parameter wie die öffentliche API. Weitere Informationen finden Sie unter So werden Methodensignaturen ermittelt.

Informationen zum Melden von Problemen und zur Suche nach weiterem Support finden Sie auf den entsprechenden Supportseiten:

Beispielcode

Im folgenden Beispielcode wird Version 3 der YouTube Data API verwendet.

Nach Keyword suchen

Diese Funktion sucht nach Videos über Hunde und protokolliert die Video-IDs und den Titel. Beachten Sie, dass dieses Beispiel die Ergebnisse auf 25 begrenzt. Wenn du mehr Ergebnisse zurückgeben möchtest, musst du zusätzliche Parameter übergeben, wie in der Referenzdokumentation zur YouTube Data API beschrieben.

advanced/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);
  }
}

Uploads abrufen

Diese Funktion ruft die hochgeladenen Videos des Nutzers ab. Dazu sind folgende Schritte erforderlich:

  1. Ruft den Kanal des Nutzers ab
  2. Ruft die uploads-Playlist des Nutzers ab
  3. Durchläuft diese Playlist und protokolliert die Video-IDs und -titel
  4. Falls eine nächste Seite mit Ergebnissen vorhanden ist, wird diese abgerufen und kehrt zu Schritt 3 zurück.
advanced/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);
  }
}

Kanal abonnieren

In diesem Beispiel wird der Google Developers-Kanal auf YouTube abonniert.

advanced/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);
    }
  }
}