Apps Script-Codebeispiele

Die folgenden Apps Script-Codebeispiele sind für die YouTube Data API verfügbar. Du kannst diese Codebeispiele im Ordner apps-script des Code-Beispiel-Repositorys für YouTube APIs auf GitHub herunterladen.

Meine Uploads abrufen

Diese Funktion ruft die hochgeladenen Videos des aktuellen Skriptnutzers ab. Für die Ausführung sind der OAuth-Lese-/Schreibbereich für YouTube sowie eine Nutzerautorisierung erforderlich. Wenn ein Nutzer in der Laufzeitumgebung von Apps Script zum ersten Mal ein Skript ausführt, fordert Apps Script ihn um die Berechtigung zum Zugriff auf die vom Skript aufgerufenen Dienste. Nachdem Berechtigungen gewährt wurden, werden sie für einen bestimmten Zeitraum im Cache gespeichert. Der Nutzer, der das Skript ausführt, wird erneut zur Berechtigung aufgefordert, sobald sich die erforderlichen Berechtigungen ändern oder wenn sie von der Funktion ScriptApp.invalidAuth() ungültig geworden sind.

Dieses Skript führt die folgenden Schritte aus, um die hochgeladenen Videos des aktiven Nutzers abzurufen: 1. Ruft die Kanäle des Nutzers ab. 2. Ruft die Uploads des Nutzers ab Playlist 3. Durchläuft diese Playlist und protokolliert die Video-IDs und -titel 4. Ruft ein Token für die nächste Seite ab (falls vorhanden). Falls eine vorhanden ist, wird die nächste Seite abgerufen. GEHE ZU Schritt 3
/**
 * This function retrieves the current script user's uploaded videos. To execute,
 * it requires the OAuth read/write scope for YouTube as well as user authorization.
 * In Apps Script's runtime environment, the first time a user runs a script, Apps
 * Script will prompt the user for permission to access the services called by the
 * script. After permissions are granted, they are cached for some periodF of time.
 * The user running the script will be prompted for permission again once the
 * permissions required change, or when they are invalidated by the
 * ScriptApp.invalidateAuth() function.
 *
 * This script takes the following steps to retrieve the active user's uploaded videos:
 *    1. Fetches the user's channels
 *    2. Fetches the user's 'uploads' playlist
 *    3. Iterates through this playlist and logs the video IDs and titles
 *    4. Fetches a next page token (if any). If there is one, fetches the next page. GOTO Step 3
 */
function retrieveMyUploads() {
  var results = YouTube.Channels.list('contentDetails', {mine: true});
  for(var i in results.items) {
    var item = results.items[i];
    // Get the playlist ID, which is nested in contentDetails, as described in the
    // Channel resource: https://developers.google.com/youtube/v3/docs/channels
    var playlistId = item.contentDetails.relatedPlaylists.uploads;

    var nextPageToken = '';

    // This loop retrieves a set of playlist items and checks the nextPageToken in the
    // response to determine whether the list contains additional items. It repeats that process
    // until it has retrieved all of the items in the list.
    while (nextPageToken != null) {
      var playlistResponse = YouTube.PlaylistItems.list('snippet', {
        playlistId: playlistId,
        maxResults: 25,
        pageToken: nextPageToken
      });

      for (var j = 0; j < playlistResponse.items.length; j++) {
        var playlistItem = playlistResponse.items[j];
        Logger.log('[%s] Title: %s',
                   playlistItem.snippet.resourceId.videoId,
                   playlistItem.snippet.title);

      }
      nextPageToken = playlistResponse.nextPageToken;
    }
  }
}

Nach Keyword suchen

Mit dieser Funktion wird nach Videos gesucht, die sich auf das Keyword „Hunde“ beziehen. Die Video-IDs und Titel der Suchergebnisse werden im Protokoll von Apps Script protokolliert.

In diesem Beispiel werden maximal 25 Ergebnisse angezeigt. Um mehr Ergebnisse zu erhalten, musst du zusätzliche Parameter übergeben, wie hier beschrieben: https://developers.google.com/youtube/v3/docs/search/list.
/**
 * This function searches for videos related to the keyword 'dogs'. The video IDs and titles
 * of the search results are logged to Apps Script's log.
 *
 * Note that this sample limits the results to 25. To return more results, pass
 * additional parameters as documented here:
 *   https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByKeyword() {
  var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25});
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

Nach Thema suchen

Diese Funktion sucht nach Videos, die mit einem bestimmten Freebase-Thema verknüpft sind. Die Video-IDs und -titel werden im Apps Script-Protokoll protokolliert. In diesem Beispiel wird die Themen-ID für Google Apps Script verwendet.

In diesem Beispiel werden maximal 25 Ergebnisse angezeigt. Um mehr Ergebnisse zu erhalten, musst du zusätzliche Parameter übergeben, wie hier beschrieben: https://developers.google.com/youtube/v3/docs/search/list.
/**
 * This function searches for videos that are associated with a particular Freebase
 * topic, logging their video IDs and titles to the Apps Script log. This example uses
 * the topic ID for Google Apps Script.
 *
 * Note that this sample limits the results to 25. To return more results, pass
 * additional parameters as documented here:
 *   https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByTopic() {
  var mid = '/m/0gjf126';
  var results = YouTube.Search.list('id,snippet', {topicId: mid, maxResults: 25});
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

Kanal abonnieren

In diesem Beispiel wird der aktive Nutzer für den YouTube-Kanal von GoogleDevelopers abonniert, der durch die channelId angegeben wird.
/**
 * This sample subscribes the active user to the Google Developers
 * YouTube channel, specified by the channelId.
 */
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  var channelId = 'UC_x5XG1OV2P6uZZ5FSM9Ttw';
  var resource = {
    snippet: {
      resourceId: {
        kind: 'youtube#channel',
        channelId: channelId
      }
    }
  };

  try {
    var response = YouTube.Subscriptions.insert(resource, 'snippet');
    Logger.log(response);
  } catch (e) {
    if(e.message.match('subscriptionDuplicate')) {
      Logger.log('Cannot subscribe; already subscribed to channel: ' + channelId);
    } else {
      Logger.log('Error adding subscription: ' + e.message);
    }
  }
}

Video aktualisieren

Dieses Beispiel sucht nach den Uploads des aktiven Nutzers und aktualisiert dann die Beschreibung des letzten Uploads, indem ein String angehängt wird.
/**
 * This sample finds the active user's uploads, then updates the most recent
 * upload's description by appending a string.
 */
function updateVideo() {
  // 1. Fetch all the channels owned by active user
  var myChannels = YouTube.Channels.list('contentDetails', {mine: true});
  // 2. Iterate through the channels and get the uploads playlist ID
  for (var i = 0; i < myChannels.items.length; i++) {
    var item = myChannels.items[i];
    var uploadsPlaylistId = item.contentDetails.relatedPlaylists.uploads;

    var playlistResponse = YouTube.PlaylistItems.list('snippet', {
      playlistId: uploadsPlaylistId,
      maxResults: 1
    });

    // Get the videoID of the first video in the list
    var video = playlistResponse.items[0];
    var originalDescription = video.snippet.description;
    var updatedDescription = originalDescription + ' Description updated via Google Apps Script';

    video.snippet.description = updatedDescription;

    var resource = {
      snippet: {
        title: video.snippet.title,
        description: updatedDescription,
        categoryId: '22'
      },
      id: video.snippet.resourceId.videoId
    };
    YouTube.Videos.update(resource, 'id,snippet');
  }
}