บริการของ YouTube

เพลย์ลิสต์ ช่อง และการถ่ายทอดสดด้วย YouTube Data API และ YouTube Live Streaming API

บริการ YouTube ช่วยให้คุณใช้ YouTube Data API และ YouTube Live Streaming API ใน Google Apps Script ได้ API นี้ช่วยให้ผู้ใช้จัดการวิดีโอ เพลย์ลิสต์ ช่อง และกิจกรรมถ่ายทอดสดได้

นี่เป็นบริการขั้นสูงที่ต้องเปิดใช้ก่อนใช้งาน

ข้อมูลอ้างอิง

ดูข้อมูลโดยละเอียดเกี่ยวกับบริการนี้ได้ที่เอกสารอ้างอิงต่อไปนี้

เช่นเดียวกับบริการขั้นสูงทั้งหมดใน Apps Script บริการ YouTube ใช้ออบเจ็กต์ เมธอด และพารามิเตอร์เดียวกันกับ API สาธารณะ ดูข้อมูลเพิ่มเติมได้ที่วิธีกำหนดลายเซ็นของเมธอด

หากต้องการรายงานปัญหาและรับการสนับสนุนอื่นๆ โปรดดูหน้าการสนับสนุนที่เกี่ยวข้อง

โค้ดตัวอย่าง

โค้ดตัวอย่างต่อไปนี้ใช้ YouTube Data API เวอร์ชัน 3

ค้นหาตามคีย์เวิร์ด

ฟังก์ชันนี้จะค้นหาวิดีโอเกี่ยวกับสุนัข จากนั้นจะบันทึกรหัสวิดีโอและชื่อ โปรดทราบว่าตัวอย่างนี้จำกัดผลลัพธ์ไว้ที่ 25 รายการ หากต้องการแสดงผลลัพธ์เพิ่มเติม ให้ส่ง พารามิเตอร์เพิ่มเติมตามที่แสดงใน เอกสารอ้างอิงของ YouTube Data API

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;
    }
    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. หากมีผลการค้นหาในหน้าถัดไป ให้ดึงข้อมูล แล้วกลับไปที่ขั้นตอนที่ 3
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);
  }
}

ติดตามช่อง

ตัวอย่างนี้จะติดตามช่อง Google Developers บน YouTube ให้กับผู้ใช้

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}`);
    }
  }
}