ตั้งค่าช่องป้ายกำกับในไฟล์

หน้านี้จะอธิบายวิธีตั้งค่าป้ายกำกับ Fieldในไฟล์ Google ไดรฟ์ไฟล์เดียว

หากต้องการเพิ่มข้อมูลเมตาลงในไฟล์โดยการตั้งค่าป้ายกำกับไฟล์ ให้ใช้เมธอด files.modifyLabels เนื้อหาของคำขอ มีอินสแตนซ์ ModifyLabelsRequest เพื่อแก้ไขชุดป้ายกำกับในไฟล์ คำขออาจมีการแก้ไขหลายรายการซึ่งจะใช้พร้อมกัน นั่นคือ หากการแก้ไขใดไม่ถูกต้อง การอัปเดตทั้งหมดจะไม่สำเร็จและระบบจะไม่ใช้การเปลี่ยนแปลงใดๆ (ซึ่งอาจขึ้นอยู่กับการเปลี่ยนแปลงอื่นๆ)

ModifyLabelsRequest มีอินสแตนซ์ LabelModification ซึ่งเป็นการแก้ไขป้ายกำกับในไฟล์ นอกจากนี้ยังอาจมีอินสแตนซ์ ของ FieldModification ซึ่งเป็นการแก้ไขช่องของป้ายกำกับ

หากทำสำเร็จ เนื้อหา การตอบกลับจะมี ป้ายกำกับที่คำขอเพิ่มหรืออัปเดต ซึ่งจะอยู่ในออบเจ็กต์ modifiedLabels ที่มีประเภท Label

ตัวอย่าง

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

Java

LabelFieldModification fieldModification =
new LabelFieldModification().setFieldId("FIELD_ID").setSetTextValues(ImmutableList.of("VALUE"));

ModifyLabelsRequest modifyLabelsRequest =
  new ModifyLabelsRequest()
      .setLabelModifications(
          ImmutableList.of(
              new LabelModification()
                .setLabelId("LABEL_ID")
                .setFieldModifications(ImmutableList.of(fieldModification))));

ModifyLabelsResponse modifyLabelsResponse = driveService.files().modifyLabels("FILE_ID", modifyLabelsRequest).execute();

Python

field_modification = {'fieldId':'FIELD_ID','setTextValues':['VALUE']}
label_modification = {'labelId':'LABEL_ID', 'fieldModifications':[field_modification]}

modified_labels = drive_service.files().modifyLabels(fileId="FILE_ID", body = {'labelModifications' : [label_modification]}).execute()

Node.js

/**
* Set a label with a text field on a Drive file
* @return{obj} updated label data
**/
async function setLabelTextField() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const fieldModification = {
    'fieldId': 'FIELD_ID',
    'setTextValues': ['VALUE'],
  };
  const labelModification = {
    'labelId': 'LABEL_ID',
    'fieldModifications': [fieldModification],
  };
  const labelModificationRequest = {
    'labelModifications': [labelModification],
  };
  try {
    const updateResponse = await service.files.modifyLabels({
      fileId: 'FILE_ID',
      resource: labelModificationRequest,
    });
    return updateResponse;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

แทนที่ค่าต่อไปนี้

  • FIELD_ID: fieldId ของช่องที่จะแก้ไข หากต้องการค้นหา fieldId ให้ดึงข้อมูลป้ายกำกับโดยใช้ Google Drive Labels API
  • VALUE: value ใหม่สำหรับช่องนี้
  • LABEL_ID: labelId ของป้ายกำกับที่จะแก้ไข
  • FILE_ID: fileId ของไฟล์ที่จะแก้ไขป้ายกำกับ

หมายเหตุ

  • หากต้องการตั้งค่าป้ายกำกับที่ไม่มีช่อง ให้ใช้ labelModifications ที่ไม่มี fieldModifications
  • หากต้องการตั้งค่าตัวเลือกช่องการเลือก ให้ใช้รหัส Choiceของค่า ที่รับได้โดยการดึงข้อมูลสคีมาของป้ายกำกับใน Drive Labels API
  • เฉพาะ Field ที่รองรับรายการค่าเท่านั้นที่จะตั้งค่าได้หลายค่า ไม่เช่นนั้นคุณจะได้รับการตอบกลับข้อผิดพลาด 400: Bad Request
  • ตั้งค่าประเภทค่าที่เหมาะสมสำหรับ Field ที่เลือก (เช่น จำนวนเต็ม ข้อความ ผู้ใช้ ฯลฯ) ไม่เช่นนั้นคุณจะได้รับการตอบกลับข้อผิดพลาด 400: Bad Request คุณสามารถดึงข้อมูลประเภทข้อมูลของช่องได้โดยใช้ Drive Labels API