ข้อมูลโค้ด API ข้อมูล

วิธีการ

เครื่องมือข้อมูลโค้ดแบบอินเทอร์แอกทีฟช่วยให้คุณทดสอบคำขอ API และสร้างตัวอย่างโค้ดที่เฉพาะเจาะจงสำหรับคำขอเหล่านั้นได้อย่างง่ายดาย สำหรับเมธอดใดก็ตาม เครื่องมือจะแสดงข้อมูลโค้ดสำหรับกรณีการใช้งานอย่างน้อย 1 กรณี และแต่ละกรณีการใช้งานจะอธิบายวิธีทั่วไปในการเรียกเมธอดนั้น ตัวอย่างเช่น คุณสามารถเรียกเมธอด channels.list เพื่อดึงข้อมูลเกี่ยวกับช่องที่เฉพาะเจาะจงหรือเกี่ยวกับช่องของผู้ใช้ปัจจุบัน

เรียกใช้คำขอ API

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

สลับข้อมูลโค้ดและตัวอย่างแบบเต็ม

สำหรับแต่ละกรณีการใช้งาน เครื่องมือจะแสดงข้อมูลโค้ดที่ระบุโค้ดที่เฉพาะเจาะจงสำหรับเมธอดที่กำลังเรียก ข้อมูลโค้ดแต่ละรายการจะระบุเมธอดที่กำลังเรียก รวมถึงค่าพารามิเตอร์และพร็อพเพอร์ตี้ที่ใช้ในคำขอ API

นอกจากนี้ เครื่องมือยังแสดงตัวอย่างโค้ดแบบเต็มที่ใส่ข้อมูลโค้ดนั้นลงในเทมเพลตซึ่งกำหนดฟังก์ชัน Boilerplate สำหรับการให้สิทธิ์คำขอ API และสร้างคำขอ API คุณสามารถใช้แถบเลื่อนเหนือตัวอย่างเพื่อสลับระหว่างข้อมูลโค้ดและตัวอย่างแบบเต็มได้

เรียกใช้ตัวอย่างโค้ดแบบเต็มในเครื่อง

ตัวอย่างโค้ดแบบเต็มได้รับการออกแบบมาให้คัดลอกและเรียกใช้ในเครื่อง โปรดทราบข้อกำหนดเบื้องต้นและขั้นตอนการตั้งค่าต่อไปนี้สำหรับการเรียกใช้ตัวอย่างโค้ดแบบเต็ม

Java

ข้อกำหนดเบื้องต้น

  • Java 1.7 ขึ้นไป
  • Gradle 2.3 ขึ้นไป

ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด

  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบสำหรับเว็บแอปพลิเคชัน ตั้งค่า URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตตามความเหมาะสม

  2. ทำตามวิธีการในคู่มือเริ่มต้นใช้งานฉบับย่อของ API Java เพื่อเตรียมโปรเจ็กต์ แต่แทนที่เนื้อหาของไฟล์ build.gradle เริ่มต้นด้วยโค้ดต่อไปนี้

    apply plugin: 'java'
    apply plugin: 'application'
    
    mainClassName = 'ApiExample'
    sourceCompatibility = 1.7
    targetCompatibility = 1.7
    version = '1.0'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.google.api-client:google-api-client:1.22.0'
        compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0'
        compile 'com.google.apis:google-api-services-youtube:v3-rev182-1.22.0'
        compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2'
        compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.4'
    }
    
    compileJava {
        options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
  3. จากไดเรกทอรีงาน ให้บันทึกไฟล์ client_secrets.json ที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงใน src/main/resources/client_secret.json

  4. จากไดเรกทอรีงาน ให้คัดลอกตัวอย่างโค้ดแบบเต็มไปยัง src/main/java/ApiExample.java (ชื่อคลาสในแต่ละตัวอย่างคือ ApiExample เพื่อให้คุณไม่ต้องแก้ไขไฟล์ build.gradle เพื่อเรียกใช้ตัวอย่างต่างๆ)

  5. เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง

    gradle -q run
  6. ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน STDOUT นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย

JavaScript
  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบสำหรับเว็บแอปพลิเคชัน ตั้งค่าต้นทาง JavaScript ที่ได้รับอนุญาตเพื่อระบุ URL ที่คุณจะใช้ส่งคำขอ (เช่น http://localhost)

  2. คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องที่เว็บเซิร์ฟเวอร์เข้าถึงได้ (เช่น /var/www/html/example.html)

  3. ค้นหาบรรทัดในตัวอย่างโค้ดที่ตั้งค่ารหัสไคลเอ็นต์ที่จะใช้สำหรับคำขอ แล้วแทนที่ค่าด้วยรหัสไคลเอ็นต์สำหรับข้อมูลเข้าสู่ระบบของคุณ

    gapi.client.init({
        'clientId': 'REPLACE_ME',
  4. เปิดไฟล์ในเบราว์เซอร์ (เช่น http://localhost/example.html) ขอแนะนำให้ใช้เบราว์เซอร์ที่มีคอนโซลดีบัก เช่น Google Chrome

  5. ให้สิทธิ์คำขอหากจำเป็น หากคำขอได้รับอนุญาต คอนโซลดีบักควรแสดงการตอบกลับจาก API ต่อคำขอเป็นออบเจ็กต์ JSON

Node.js

ข้อกำหนดเบื้องต้น

  • ต้องติดตั้ง Node.js
  • เครื่องมือจัดการแพ็กเกจ npm (มาพร้อมกับ Node.js)
  • ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Node.js
    npm install googleapis --save
  • สิทธิ์เข้าถึงอินเทอร์เน็ตและเว็บเบราว์เซอร์
  • บัญชี Google

ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด

  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ

  2. บันทึกไฟล์ client_secret.json ที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง

  3. คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์ client_secret.json (หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง)

  4. เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง

    node sample.js
  5. ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน STDOUT หรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย

Python

ข้อกำหนดเบื้องต้น

  • Python 2.6 ขึ้นไป
  • เครื่องมือจัดการแพ็กเกจ pip
  • ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Python
    pip install --upgrade google-api-python-client
  • google-auth, google-auth-oauthlib และ google-auth-httplib2 สำหรับการให้สิทธิ์ผู้ใช้
    pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
  • เฟรมเวิร์กเว็บแอปพลิเคชัน Flask Python (หากคุณเรียกใช้ตัวอย่าง Python สำหรับเว็บแอปพลิเคชันเซิร์ฟเวอร์)
    pip install --upgrade flask
  • ไลบรารี HTTP ของคำขอ
    pip install --upgrade requests

ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด

  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นเว็บแอปพลิเคชัน สำหรับตัวอย่างที่ใช้เฟรมเวิร์กเว็บแอปพลิเคชัน Flask Python และตั้งค่า URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตสำหรับข้อมูลเข้าสู่ระบบเหล่านั้นด้วย มิฉะนั้น ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ

  2. บันทึกไฟล์ client_secret.json ที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง

  3. คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์ client_secret.json (หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง)

  4. เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง

    python sample.py
    หมายเหตุสำหรับตัวอย่างเว็บแอปพลิเคชันเซิร์ฟเวอร์:

    หากคุณเรียกใช้ตัวอย่าง Python สำหรับเว็บแอปพลิเคชันเซิร์ฟเวอร์ การเรียกใช้สคริปต์จะเริ่มเว็บเซิร์ฟเวอร์ในเครื่อง หากต้องการเรียกใช้คำขอ API จริง คุณต้องไปที่หน้าเว็บที่แสดงในเบราว์เซอร์ ตัวอย่างเช่น ตัวอย่าง Python ที่ใช้เฟรมเวิร์กเว็บแอปพลิเคชัน Flask จะมีบรรทัดลักษณะนี้:

    app.run('localhost', 8080, debug=True)

    โค้ดนี้จะเริ่มเว็บเซิร์ฟเวอร์ในเครื่องที่ http://localhost:8080 อย่างไรก็ตาม สคริปต์จะไม่พยายามเรียกใช้คำขอ API จนกว่าคุณจะไปที่ http://localhost:8080 ในเบราว์เซอร์ (คุณต้องตั้งค่า URL สำหรับเซิร์ฟเวอร์ในเครื่องเป็น URI การเปลี่ยนเส้นทางที่ได้รับอนุญาตสำหรับข้อมูลเข้าสู่ระบบการให้สิทธิ์ด้วย)
  5. ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน STDOUT หรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย

PHP

ข้อกำหนดเบื้องต้น

  • PHP 5.4 ขึ้นไปพร้อมอินเทอร์เฟซบรรทัดคำสั่ง (CLI) และส่วนขยาย JSON ที่ติดตั้ง
  • เครื่องมือจัดการการขึ้นต่อกัน Composer
  • ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ PHP
    php composer.phar require google/apiclient:^2.0

ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด

  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ

  2. บันทึกไฟล์ client_secret.json ที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง

  3. คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์ client_secret.json (หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง)

  4. เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง

    php sample.php
  5. ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน STDOUT หรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย

Ruby

ข้อกำหนดเบื้องต้น

  • Ruby 2.0 ขึ้นไป
  • ไลบรารีของไคลเอ็นต์ Google APIs สำหรับ Ruby
    gem install google-api-client

ตั้งค่าโปรเจ็กต์และเรียกใช้ตัวอย่างโค้ด

  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ

  2. บันทึกไฟล์ client_secret.json ที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง

  3. คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์ client_secret.json (หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง)

  4. เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง

    ruby sample.rb
  5. ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน STDOUT หรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย

ไป
  1. สร้างโปรเจ็กต์ใน Cloud Console และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ใน คอนโซล Google Cloud เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ

  2. บันทึกไฟล์ client_secret.json ที่เชื่อมโยงกับข้อมูลเข้าสู่ระบบของคุณลงในไฟล์ในเครื่อง

  3. คัดลอกตัวอย่างโค้ดแบบเต็มไปยังไฟล์ในเครื่องในไดเรกทอรีเดียวกับไฟล์ client_secret.json (หรือแก้ไขตัวอย่างเพื่อระบุตำแหน่งของไฟล์นั้นอย่างถูกต้อง)

  4. เรียกใช้ตัวอย่างจากบรรทัดคำสั่ง

    go run sample.go
  5. ตัวอย่างส่วนใหญ่จะพิมพ์บางอย่างลงใน STDOUT หรือสำหรับตัวอย่างเว็บแอปพลิเคชัน จะพิมพ์ลงในหน้าเว็บที่คุณกำลังดู นอกจากนี้ คุณยังตรวจสอบเว็บไซต์ YouTube เพื่อดูผลลัพธ์ของคำขอที่เขียนข้อมูล เช่น คำขอที่สร้างเพลย์ลิสต์หรือส่วนของช่องได้ด้วย

ใช้ฟังก์ชัน Boilerplate

ดังที่กล่าวไว้ข้างต้น ตัวอย่างโค้ดแบบเต็มจะใช้โค้ด Boilerplate สำหรับการให้สิทธิ์และสร้างคำขอ API ตัวอย่างเช่น ฟังก์ชัน build_resource ในตัวอย่าง Python จะใช้พจนานุกรมที่จับคู่พร็อพเพอร์ตี้ทรัพยากรกับค่าของพร็อพเพอร์ตี้เหล่านั้นเพื่อสร้างทรัพยากรที่สามารถแทรกหรืออัปเดตได้ นอกจากนี้ ยังมีฟังก์ชันที่คล้ายกันสำหรับ JavaScript, PHP, Ruby, Go และ Apps Script

ตัวอย่างเช่น แท็บด้านล่างแสดงวิธีเรียกฟังก์ชัน Boilerplate สำหรับการสร้างทรัพยากรเพื่อสร้างทรัพยากร playlist โปรดทราบว่าฟังก์ชัน Boilerplate ไม่จำเป็นต้องทราบประเภทของทรัพยากรที่กำลังสร้าง

JavaScript
function createResource(properties) {
  var resource = {};
  var normalizedProps = properties;
  for (var p in properties) {
    var value = properties[p];
    if (p && p.substr(-2, 2) == '[]') {
      var adjustedName = p.replace('[]', '');
      if (value) {
        normalizedProps[adjustedName] = value.split(',');
      }
      delete normalizedProps[p];
    }
  }
  for (var p in normalizedProps) {
    // Leave properties that don't have values out of inserted resource.
    if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) {
      var propArray = p.split('.');
      var ref = resource;
      for (var pa = 0; pa < propArray.length; pa++) {
        var key = propArray[pa];
        if (pa == propArray.length - 1) {
          ref[key] = normalizedProps[p];
        } else {
          ref = ref[key] = ref[key] || {};
        }
      }
    };
  }
  return resource;
}
var resource = createResource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'JavaScript code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'
}
Python
# Build a resource based on a list of properties given as key-value pairs.
# Leave properties with empty values out of the inserted resource.
def build_resource(properties):
  resource = {}
  for p in properties:
    # Given a key like "snippet.title", split into "snippet" and "title", where
    # "snippet" will be an object and "title" will be a property in that object.
    prop_array = p.split('.')
    ref = resource
    for pa in range(0, len(prop_array)):
      is_array = False
      key = prop_array[pa]
      # Convert a name like "snippet.tags[]" to snippet.tags, but handle
      # the value as an array.
      if key[-2:] == '[]':
        key = key[0:len(key)-2:]
        is_array = True
      if pa == (len(prop_array) - 1):
        # Leave properties without values out of inserted resource.
        if properties[p]:
          if is_array:
            ref[key] = properties[p].split(',')
          else:
            ref[key] = properties[p]
      elif key not in ref:
        # For example, the property is "snippet.title", but the resource does
        # not yet have a "snippet" object. Create the snippet object here.
        # Setting "ref = ref[key]" means that in the next time through the
        # "for pa in range ..." loop, we will be setting a property in the
        # resource's "snippet" object.
        ref[key] = {}
        ref = ref[key]
      else:
        # For example, the property is "snippet.description", and the resource
        # already has a "snippet" object.
        ref = ref[key]
  return resource

resource = build_resource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Python code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'}
  
PHP
// Add a property to the resource.
function addPropertyToResource(&$ref, $property, $value) {
    $keys = explode(".", $property);
    $is_array = false;
    foreach ($keys as $key) {
        // Convert a name like "snippet.tags[]" to "snippet.tags" and
        // set a boolean variable to handle the value like an array.
        if (substr($key, -2) == "[]") {
            $key = substr($key, 0, -2);
            $is_array = true;
        }
        $ref = &$ref[$key];
    }

    // Set the property value. Make sure array values are handled properly.
    if ($is_array && $value) {
        $ref = $value;
        $ref = explode(",", $value);
    } elseif ($is_array) {
        $ref = array();
    } else {
        $ref = $value;
    }
}

// Build a resource based on a list of properties given as key-value pairs.
function createResource($properties) {
    $resource = array();
    foreach ($properties as $prop => $value) {
        if ($value) {
            addPropertyToResource($resource, $prop, $value);
        }
    }
    return $resource;
}

$propertyObject = createResource(array(
    'snippet.title' => 'Sample playlist ',
    'snippet.description' => 'This is a sample playlist description.',
    'snippet.tags[]' => 'Python code, interactive',
    'snippet.defaultLanguage' => '',
    'status.privacyStatus' => 'private'));
Ruby
# Build a resource based on a list of properties given as key-value pairs.
def create_resource(properties)
  resource = {}
  properties.each do |prop, value|
    ref = resource
    prop_array = prop.to_s.split(".")
    for p in 0..(prop_array.size - 1)
      is_array = false
      key = prop_array[p]
      if key[-2,2] == "[]"
        key = key[0...-2]
        is_array = true
      end
      if p == (prop_array.size - 1)
        if is_array
          if value == ""
            ref[key.to_sym] = []
          else
            ref[key.to_sym] = value.split(",")
          end
        elsif value != ""
          ref[key.to_sym] = value
        end
      elsif ref.include?(key.to_sym)
        ref = ref[key.to_sym]
      else
        ref[key.to_sym] = {}
        ref = ref[key.to_sym]
      end
    end
  end
  return resource
end

resource = create_resource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Ruby code, interactive',
    'snippet.default_language': '',
    'status.privacy_status': 'private'})
Apps Script
// Build an object from an object containing properties as key-value pairs
function createResource(properties) {
  var res = {};
  var normalizedProps = {};
  for (var p in properties) {
    var value = properties[p];
    if (p.substr(-2, 2) == '[]' && value) {
      var adjustedName = p.replace('[]', '');
      normalizedProps[adjustedName] = value.split(',');
    } else {
      normalizedProps[p] = value;
    }
  }
  for (var p in normalizedProps) {
    if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) {
      var propArray = p.split('.');
      var ref = res;
      for (var pa = 0; pa < propArray.length; pa++) {
        var key = propArray[pa];
        if (pa == propArray.length - 1) {
          ref[key] = normalizedProps[p];
        } else {
          ref = ref[key] = ref[key] || {};
        }
      }
    };
  }
  return res;
}

var resource = createResource({
    'snippet.title': 'Sample playlist ',
    'snippet.description': 'This is a sample playlist description.',
    'snippet.tags[]': 'Apps Script code, interactive',
    'snippet.defaultLanguage': '',
    'status.privacyStatus': 'private'
});
ไป
func addPropertyToResource(ref map[string]interface{}, keys []string, value string, count int) map[string]interface{} {
        for k := count; k < (len(keys) - 1); k++ {
                switch val := ref[keys[k]].(type) {
                case map[string]interface{}:
                        ref[keys[k]] = addPropertyToResource(val, keys, value, (k + 1))
                case nil:
                        next := make(map[string]interface{})
                        ref[keys[k]] = addPropertyToResource(next, keys, value, (k + 1))
                }
        }
        // Only include properties that have values.
        if (count == len(keys) - 1 && value != "") {
                valueKey := keys[len(keys)-1]
                if valueKey[len(valueKey)-2:] == "[]" {
                        ref[valueKey[0:len(valueKey)-2]] = strings.Split(value, ",")
                } else if len(valueKey) > 4 && valueKey[len(valueKey)-4:] == "|int" {
                        ref[valueKey[0:len(valueKey)-4]], _ = strconv.Atoi(value)
                } else if value == "true" {
                        ref[valueKey] = true
                } else if value == "false" {
                        ref[valueKey] = false
                } else {
                        ref[valueKey] = value
                }
        }
        return ref
}

func createResource(properties map[string]string) string {
        resource := make(map[string]interface{})
        for key, value := range properties {
                keys := strings.Split(key, ".")
                ref := addPropertyToResource(resource, keys, value, 0)
                resource = ref
        }
        propJson, err := json.Marshal(resource)
        if err != nil {
               log.Fatal("cannot encode to JSON ", err)
        }
        return string(propJson)
}

func main() {
        properties := (map[string]string{
                 "snippet.title": "Sample playlist ",
                 "snippet.description": "This is a sample playlist description.",
                 "snippet.tags[]": "Go code, interactive",
                 "snippet.defaultLanguage": "",
                 "status.privacyStatus": "private",
        })
        res := createResource(properties)

โหลดทรัพยากรที่มีอยู่

หากต้องการทดสอบคำขอให้อัปเดตทรัพยากรที่มีอยู่ คุณสามารถโหลดค่าพร็อพเพอร์ตี้ปัจจุบันของทรัพยากรนั้นลงในแบบฟอร์มอัปเดตได้ ตัวอย่างเช่น หากต้องการอัปเดตข้อมูลเมตาเกี่ยวกับวิดีโอ ให้ป้อนรหัสวิดีโอในช่องพร็อพเพอร์ตี้ id แล้วคลิกปุ่มโหลดทรัพยากร ค่าพร็อพเพอร์ตี้ปัจจุบันจะโหลดลงในแบบฟอร์ม และคุณสามารถอัปเดตเฉพาะค่าที่ต้องการเปลี่ยนได้