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

วิธีการ

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

ดําเนินการคําขอ API

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

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

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

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

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

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

Java

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

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

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

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

  2. ทําตามวิธีการในคู่มือเริ่มใช้งานฉบับย่อสําหรับ Java 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. สร้างโปรเจ็กต์ในคอนโซล API และตั้งค่าข้อมูลเข้าสู่ระบบสําหรับเว็บแอปพลิเคชัน ตั้งค่าต้นทาง 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. สร้างโปรเจ็กต์ในคอนโซล API และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ในคอนโซล Google API เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นอื่นๆ

  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. สร้างโปรเจ็กต์ในคอนโซล API และตั้งค่าข้อมูลเข้าสู่ระบบ OAuth 2.0 ในคอนโซล Google API เมื่อตั้งค่าข้อมูลเข้าสู่ระบบ ให้ตั้งค่าประเภทแอปพลิเคชันเป็นเว็บแอปพลิเคชันสําหรับตัวอย่างที่ใช้เฟรมเวิร์กเว็บแอปพลิเคชัน 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
  • เครื่องมือการจัดการทรัพยากร Dependency Composer
  • ไลบรารีของไคลเอ็นต์ Google APIs สําหรับ PHP:
    php composer.phar require google/apiclient:^2.0

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

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

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

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

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

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

ทับทิม

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

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

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

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

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

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

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

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

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

  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'));
ทับทิม
# 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 แล้วคลิกปุ่มโหลดทรัพยากร ค่าพร็อพเพอร์ตี้ปัจจุบันจะโหลดลงในแบบฟอร์มและคุณจะอัปเดตได้เฉพาะค่าที่ต้องการเปลี่ยน